如何在亿级mysql数据库中随机抽任意n条数据

三种方案:

1.通过by rand()的方式,最low的方式,不过对于小数据量了完全可以,简单方便

2.通过sql语句实现SELECT * FROM      opus WHERE player_id >= ((SELECT MAX(player_id) FROM opus)-(SELECT      MIN(player_id) FROM opus)) * RAND() + (SELECT MIN(player_id) FROM opus)       LIMIT 200

但是根据执行计划来看,效率还是不怎么好,如果表中有索引字段,则将会放弃使用索引来执行查询;

 

3.SELECT t.opus_id FROM opus t where t.opus_id >=[start] and t.opus_id<=[start + 1000]  limit 200;

start则是通过代码来生成的随机数。通过观察执行计划,效率是最高的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值