如何高效地随机获取MySQL中的某些行?

问题描述

假设我的MySQL数据库中的某张表有超过上百万行,那么如何**高效**、**准确**地**随机取得**其中的1000行呢?

注意

  • 我的数据表中没有类似于‘ID’这样的字段,因此网上常见的依据最大ID生成随机数的方法无法直接使用。而且数据表也不允许增加新的内容。
  • order by rand()的方法就不必说明了。

写一个存储过程,用循环和随机数函数生成1000个行号然后:
select * from table limit line_num, 1;