我有一个SELECT查询,我期待数以百万计的结果。我需要在MySQL中随机化这些结果。在查询后,在我的脚本中执行它显然使用了太多的RAM。有人可以重做这个查询,以便结果都是随机的,而不使用rand()命令吗?我看过一些例子并试图使用它们,但它们不适用于我,因为它们似乎都依赖于返回整个表而不是使用WHERE子句。这里是我的查询:MySQL如何安全地随机化这个查询的输出?
SELECT * FROM pool
WHERE gender = 'f'
AND (`location` = 'united states' OR `location` = 'us' OR `location` = 'usa');
究竟你尝试过产生在此范围内的随机数?你说过“尝试一些例子”,那么它们是什么?使用ORDER BY RAND()有什么问题? – Arran
的例子只是真的不适用于我的查询,所以我没有发布它们。 ORDER BY RAND()不适用于大型表格。分区结束,查询需要几年才能完成一个1000万行的表。 – xendi
'ORDER BY RAND()'巨大的表格非常缓慢。它生成额外的临时表,更多的解释在这里: –
Zefiryn