Mysql - 1 時間ごとに 100k 行のデータベースを並べ替えたい。並べ替える「順序」というフィールドがあります。再注文するにはどうすればよいですか?
私は現在これを行っています(疑似):
mainpage.php : select * from table order by `order` desc limit 100;
および毎時:
cronjob.php : select * from table order by rand();
$i=0;
foreach($row) {
$i++;
update table set order = $i where id = $row['id']
}
しかし、それには何年もかかります。
「update table set order = rand()」を実行すると、重複が発生し、重複したくありませんorder
(ただし、更新中に重複が発生するため、UNIQUEインデックスに設定されていません.
これを行う最善の方法は何ですか?
(「select * from table order by rand() limit 100」を実行するだけでは非常に遅かったため、この方法で行いますが、インデックス上に置く方がはるかに高速です。並べ替えにはかなりの時間がかかります)
(mysql5)