0
我运行此查询5次5秒分开,对50万行的表:有没有办法比ORDER BY RAND减少随机增加速度?
SELECT * FROM `apps` WHERE dev_name = '' ORDER BY RAND() LIMIT 10;
我想获得50行具有的是唯一一个90-95%的机会。查询现在需要10秒钟。我宁愿把它降低,并且随机抽取的机会也更小。
我运行此查询5次5秒分开,对50万行的表:有没有办法比ORDER BY RAND减少随机增加速度?
SELECT * FROM `apps` WHERE dev_name = '' ORDER BY RAND() LIMIT 10;
我想获得50行具有的是唯一一个90-95%的机会。查询现在需要10秒钟。我宁愿把它降低,并且随机抽取的机会也更小。
您的WHERE子句中尝试
AND RAND() >= 0.90
(或0.95,如果你喜欢)。
您可能想要学习Fetching Random Rows from a Table,如here in a related question中突出显示。另一篇伟大的文章可以在here找到。
这会比'ORDER BY RAND'快吗? – User
是的,但不是很随意。在桌子的自然顺序中获得退后的机会非常小。 – luksch
@luksch为什么?它应该选择具有相同概率的任何行。 – EJP