9

可能重复:
从mysql中的大表中快速选择随机行

我已经看到使用这样的查询拉取随机行,这对于大型数据集来说效率很低。

SELECT id FROM table ORDER BY RANDOM() LIMIT 1

我还看到了其他各种不适用于 MySQL 的特定于 RDBMS 的解决方案。

我能想到的最好的事情是使用两个查询并做这样的事情。

  1. 获取表中的行数。MyISAM 表存储行数,因此速度非常快。
  2. 计算 0 和 rowcount - 1 之间的随机数。
  3. 选择按主键排序的行,LIMIT randnum, 1

这是SQL:

SELECT COUNT(*) FROM table;
SELECT id FROM table LIMIT randnum, 1;

有没有人有更好的主意?

4

0 回答 0