mysql随机查询最常见的写法如下: 1 SELECT * FROM tablename ORDER BY RAND() LIMIT 1 php手册上如此解释:关于从MySQL表中选择随机行: SELECT * FROM tablename ORDER BY RAND() LIMIT 1适用于小桌子,但一旦桌子
MySQL随机查询最常见的写法如下:
1 SELECT * FROM 表名 ORDER BY RAND() LIMIT 1
php手册上如此解释:
关于从 MySQL 表中选择随机行:
SELECT * FROM 表名 ORDER BY RAND() LIMIT 1
适用于小表,但是一旦表增长超过 300,000 条记录左右,这将非常慢,因为 MySQL 必须处理表中的所有条目,对它们进行随机排序,然后返回排序结果的第一行,而且这个排序需要很长时间。相反,你可以这样做(至少如果你有 auto_increment PK):
SELECT MIN(id), MAX(id) FROM 表名;
将结果取入$a
$id=rand($a[0],$a[1]);
SELECT * FROM 表名 WHERE id>='$id' LIMIT 1.
大意是说,如果你用ORDER BY RAND()来随机读取记录的话,当数据表记录达到30万或者更多的时候,mysql将非常吃力。所以php手册里给了一种方法,结合php来实现:
首先 SELECT MIN(id), MAX(id) FROM tablename; 轻松获取数据库;
然后$id=rand($a[0],$a[1]); 产生一个随机数;
='$id' LIMIT 1 将上面产生的随机数带入查询;
显然上面是效率最高的。
如果需要多条记录的话,就循环查询,并记得删除重复记录。
其他的一些方法可以自行查阅一下google或者百度。
,