http://www.zhihu.com/question/20151242
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:曹力
链接:http://www.zhihu.com/question/20151242/answer/14140759
来源:知乎
因为你用了rand(),遍历每条记录都要运算一次rand(),当然慢了
我以前翻译过一篇国外mysql牛人写的关于随机排序的文章,仅供参考
http://shiningray.cn/order-by-rand.html
主要的思路是,如果id是连续分布,那直接根据max(id)进行获得随机id,然后直接取出
如果id不连续,存在空挡,那么可以总是选择比随机出的id大(或小)的记录
如果id不连续,且必须尽可能平均地获取记录,那么需要额外做一个表,将不连续的id映射成连续id,然后进行随机
时间: 2024-08-26 12:39:22