日期:2014-05-16  浏览次数:20711 次

如何快速地随机取记录?
select * from table order by rand(); 是如此的慢以至于根本无法用。
我的表非常的巨大

------解决方案--------------------
千万别用rand()取随机数字


可以产生几个随机id 

类似 select * from tb where id in (3,55,77,101,555);
------解决方案--------------------
select * from table order by rand(); 是全表扫描生成结果后再利用文件排序,速度肯定慢。

一般的通用做法是,先在程序中生成一组随机数, A() = {1,40,99,452 。。。}
然后找出ID<= 这些随机数的 limit 1 的记录。