在MySQL中从表中选择随机行的最佳方法是什么?

时间:2020-03-06 14:48:43  来源:igfitidea点击:
Possible Duplicate:

  quick selection of a random row from a large table in mysql

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

SELECT id FROM table ORDER BY RANDOM() LIMIT 1

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

我能想到的最好的办法就是使用两个查询并执行类似的操作。

  • 获取表中的行数。 MyISAM表存储行数,因此非常快。
  • 计算介于0和行数-1之间的随机数。
  • 选择按主键排序的行,其限制为RAND numnum 1

这是SQL:

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

有谁有更好的主意吗?

解决方案