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

select SQL_NO_CACHE  cid,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秒之间,可以接受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值