在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的。下面我来介绍随机取数据一些优化方法。
- SELECT * FROM table_name ORDER BY rand() LIMIT 5;
复制代码
rand在手册里是这么说的:
RAND()
RAND(N)
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
- mysql> select RAND();
- -> 0.5925
- mysql> select RAND(20);
- -> 0.1811
- mysql> select RAND(20);
- -> 0.1811
- mysql> select RAND();
- -> 0.2079
- mysql> select RAND();
- -> 0.7888
复制代码
你不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000的集合的随机样本。注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。
网上基本上都是查询max(id) * rand()来随机获取数据。