Mysql - 我想每小时重新排序一个 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”真的很慢,但是将它放在索引上要快得多。重新排序只需要很长时间)
(mysql 5)