如何最好地编写一个查询,从总共 600k 行中随机选择 10 行?
最佳答案
一篇很棒的帖子,处理了多种情况,从简单到间隙,再到有间隙的不均匀情况。
http://jan.kneschke.de/projects/mysql/order-by-rand/
对于大多数一般情况,您可以这样做:
SELECT name
FROM random AS r1 JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1
这假设 id 的分布是相等的,并且 id 列表中可以存在间隙。请参阅文章以获取更高级的示例
关于MySQL从600K行中快速选择10个随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59905510/