erlchina 发表于 2016-10-21 02:02:07

Mysql利用随机取N条记录的方法

select SQL_NO_CACHEcid,account,country,companyname
FROM f_company as c
JOIN (select ROUND(rand() * ((SELECT MAX( cid )
FROM f_company))) as id) AS T
where c.cid >= T.id limit 10
  
  直接上代码,留作记录,怕以后忘掉。网上很多的那种order by rand(),效率很差,就不讨论了。这种方法是网上看到的,自己测了一下效果还可以。
  
  废话一下:

SELECT MAX( cid ) FROM f_company 语句取出f_company表中cid最大的记录

随机浮点数rand()与上面得到的最大cid相乘,结果再取整(该记录即为随机数)

where条件中 c.cid >= T.id 得到cid大于该随机数的所有记录,然后加limit 10

即得到最终想要的10条随机记录.


在我目前的环境,80万记录的f_company表(约780M)查询用时在0.006秒到0.016秒之间,可以接受。
页: [1]
查看完整版本: Mysql利用随机取N条记录的方法