如何在亿级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则是通过代码来生成的随机数。通过观察执行计划,效率是最高的!

猜你喜欢

转载自falseking.iteye.com/blog/2281991