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

Dav*_*vid 9 mysql random

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

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

SELECT id FROM table ORDER BY RANDOM() LIMIT 1
Run Code Online (Sandbox Code Playgroud)

我还看到了其他各种与MySQL无关的RDBMS特定解决方案.

我能想到的最好的事情就是使用两个查询并执行类似的操作.

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

这是SQL:

SELECT COUNT(*) FROM table;
SELECT id FROM table LIMIT randnum, 1;
Run Code Online (Sandbox Code Playgroud)

有没有人有更好的主意?