文章表
随机栏目下随机取几条记录
求高效写法

解决方案 »

  1.   

    随机这种效率非常低  可以用伪随即
    随机取十条写法
    select * from tb order by newid() limit 10;
    伪随即十条
    select * from tb where id between 100 and 110;
    select * from tb where id between 150 and 160;
      

  2.   

    SELECT * 
    FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 
    WHERE t1.id >= t2.id 
    ORDER BY t1.id LIMIT 10;
      

  3.   

    根据栏目作为条件 
    select * from tb order by newid() limit 10 where catelogId=1