三种方案:
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则是通过代码来生成的随机数。通过观察执行计划,效率是最高的!
本文介绍了三种数据库中实现随机抽样的方法:直接通过byrand()函数、利用SQL语句结合RAND()函数与LIMIT指令、以及通过代码生成随机数区间再进行SELECT查询。最后一种方法在执行计划中显示出最高的效率。
1272

被折叠的 条评论
为什么被折叠?



