MySQL从600K行中快速选择10个随机行

标签 mysql sql random

如何最好地编写一个查询,从总共 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/

相关文章:

c# - 从网络服务器使用 MySQL 的 Windows 应用程序

php - 使用计数还是有一个可以计数的字段?

java - JDBC 查询错误

javascript - JS : Random String without Repeating Same String Twice

python - 从 "non uniform"python 字典中选择随机元素

javascript - 如何在 Javascript 中生成偏态随机数?

mysql - 如何将关系代数除法转换为sql除法查询?

MySQL:如何加速查询获取大量数据并使用 LIKE

sql - bigquery连接错误字段具有不同类型int32和int64,因此不能作为连接属性进行比较

mysql - 在 varchar 键上连接多个表 - MYSQL : Performance Issues