Mysqlランダムソート実装
638 ワード
ランダムソート実装
実現構想:ランダムプールデータテーブルを生成し、データテーブルに予め定義された量のランダムデータを格納し、データを使用する際にランダム所定量シーケンス番号で関連付けて数を出す.
ランダム・データの書き込み(ランダム・プールを定期的に更新可能)
使用時にランダムにシーケンス番号をキャッシュし、ページングクエリ時にシーケンス番号でクエリすればよい
実現構想:ランダムプールデータテーブルを生成し、データテーブルに予め定義された量のランダムデータを格納し、データを使用する際にランダム所定量シーケンス番号で関連付けて数を出す.
CREATE TABLE table_seq(
id INT(11) DEFAULT 0 NOT NULL,
seq INT DEFAULT 0 NOT NULL,
seq_index BIGINT(21) NOT NULL
);
ランダム・データの書き込み(ランダム・プールを定期的に更新可能)
insert into table_seq
SELECT t.id,1 AS seq,(@rownum:=@rownum+1) AS seq_index
FROM (SELECT id FROM table ORDER BY RAND()) t,(SELECT @rownum:=0) t1;
使用時にランダムにシーケンス番号をキャッシュし、ページングクエリ時にシーケンス番号でクエリすればよい
select t1.* from table t1,table_seq t2
where t1.id=t2.id
and t2.seq=1
order by t2.seq_index
limit 0,10