如果表中有唯一主键,比如ID INT Primary key 且值平均分布。则可以 select * from t where id<rand() order by id limit 1 5次人。
这个我考虑了,但是不行,因为ID不是连续的 你看这样会不会好很多:select * from t where id > (select id from t order by id asc limit $rand,1) order by id asc limit 5; ID为主键 只用一次limit,虽然不太够随机,但是效率上会不会好很多?
5次人。
这个我考虑了,但是不行,因为ID不是连续的
你看这样会不会好很多:select * from t where id > (select id from t order by id asc limit $rand,1) order by id asc limit 5;
ID为主键
只用一次limit,虽然不太够随机,但是效率上会不会好很多?
不过不连续也没关系,我觉得可以试试:
1. 取 max(id) 代替 count(*)
2. 随机取 max(id) 内的五条,如果有没取到的,再随机取,直到取满五条为止