mysql - 从mysql中的大表中快速选择随机行

标签 mysql sql select random

从大型 mysql 表中选择随机行的快速方法是什么?

我在 php 工作,但我对任何解决方案都感兴趣,即使它是用另一种语言编写的。

最佳答案

获取所有 id,从中随机选择一个,然后检索整行。

如果您知道 ID 是连续的,没有漏洞,您可以只获取最大值并计算一个随机 ID。

如果这里和那里有漏洞但主要是顺序值,并且您不关心稍微偏斜的随机性,请获取最大值,计算一个 id,然后选择 id 等于或大于该值的第一行你算了算倾斜的原因是 id 跟随这样的漏洞比跟随另一个 id 的漏洞更有可能被选中。

如果您随机排序,您将面临糟糕的表格扫描,快速 一词不适用于此类解决方案。

不要那样做,也不应该通过 GUID 来订购,它有同样的问题。

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

相关文章:

c++ - 使用单个文件描述符,select,poll和epoll和...之间是否有任何性能差异?

mysql - 选择除最近的四行之外的所有行

php - 插入时 SQL 语法错误

mysql - 如何在Spring Batch中进行多个查询(具体使用LAST_INSERT_ID())

mysql - db.QueryContext(ctx, query, args) 正在为同一个数据库变量建立新连接

mysql - 合并具有相同值的sql行

php - SELECT 查询是否有可能在 Joomla DB 中插入数据?

MySQL 插入...选择 #1054 错误

php - "Invalid parameter number: parameter was not defined"插入数据

sql - 在 SQL 中动态比较不同列和行中的日期