本帖最后由 mycool58 于 2011-08-17 22:46:30 编辑

解决方案 »

  1.   

    如果表中有唯一主键,比如ID INT Primary key 且值平均分布。则可以 select * from t where id<rand() order by id limit 1
    5次人。
      

  2.   


    这个我考虑了,但是不行,因为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,虽然不太够随机,但是效率上会不会好很多?
      

  3.   

    id 不连续啊……
    不过不连续也没关系,我觉得可以试试:
    1. 取 max(id) 代替 count(*)
    2. 随机取 max(id) 内的五条,如果有没取到的,再随机取,直到取满五条为止