这个技术的应用场景还是蛮多的,比如头条要从100万条相似数据中随机抽几个给你展示。
我们假设是抽取5个吧,方案后端语言用PHP,其他语言也大同小异。
1、内置方法
select * from table order by rand() limit 5;
改方案并不是适合百万数据,耗时长,性能堪忧。
2、随机值
该方法如果百万数据中有废数据,那么这个总量和取出值就很容易出现空值。
3、取出值再随机化方案
这个方案的计算量非常大,毕竟要把数据全取出来再随机化一遍,还得再取出几个。
4、建议方案:随机取值判定有无。在判定无时,有的人采用再调用这个方法,实际没必要甚至出错。
我们可以通过for一个最大id的量,然后一直取值,直到取出含有数据的随机值。
好了,不知道你有其他什么建议?