gpt4 book ai didi

mysql - 在mysql中随机选择10行

转载 作者:行者123 更新时间:2023-11-29 01:56:06 25 4
gpt4 key购买 nike

如何从至少有 100 万个寄存器的表中随机获取 10 行?我读到关于 order by random() 但很多人说它太慢了。在这种情况下我可以使用哪种算法?

最佳答案

ORDER BY RAND() LIMIT n 是真的很费时间。但它确实提供了一个很好的伪随机选择 n不同的行。

你可以试试这个。它仍然需要扫描您的表格,但不必进行排序。这并不能保证正好十行;它可能产生更多或更少。

SELECT *
FROM (
SELECT a.*
FROM mytable a
JOIN (select COUNT(*) rowcnt, 10 samplecnt from mytable) c
WHERE RAND() <= (CAST(samplecnt AS DOUBLE) )/ CAST(rowcnt AS DOUBLE)
) sample
ORDER BY rand()

它的工作原理是使用伪随机数来选择是否将表格的每一行都包含在结果集中。

在我有 750K 行的测试表上,ORDER BY RAND() LIMIT 10方法比 WHERE RAND() <=... 慢三倍方法。

关于mysql - 在mysql中随机选择10行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28639445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com