我怎样才能最好地编写一个从总共600k行中随机 Select 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相关问答推荐

错误:数据包顺序错误.GET:0预期:10 node JS MySQL

MySQL 搜索列字段字符串

Hibernate 不创建表'

如何在sql中包含0作为计数?

错误 2020 (HY000): 数据包大于 'max_allowed_pa​​cket' 字节,docker 容器内出现 mysql 错误

错误:此查询集包含对外部查询的引用,并且只能在子查询中使用

使用 awk 重写 maxscale 过滤器

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

Mysql时间序列数据的最小值和最大值

将 Go var 传递给 MySQL - try 在 Go lang 程序 (MySQL db) 中执行 db.Exec 时出错

访问 nodejs、mysql 和 json 中的嵌套对象数组

正则表达式模式相当于 mysql 中的 %word%

非常规字符的不正确字符串值错误

如何使用nodejs从mysql数据库中获取最新的10条记录?

如何用一系列日期填充表格?

在 MYSQL 中按枚举字段排序

将sql查询的结果写入mysql中的文件

为什么 MySQL 自动增量会在插入失败时增加?

带有 LIKE 运算符的 Select 语句中的 MySQL case

MySQL - 重复表