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

时间:2008-09-26 21:58:42

标签: mysql random

  

可能重复:
  quick selection of a random row from a large table in mysql

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

SELECT id FROM table ORDER BY RANDOM() LIMIT 1

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

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

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

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

    有没有人有更好的主意?

0 个答案:

没有答案