select a.*,b.title from chapter a 
left join books b on a.bookId=b.id  
order by a.id desc limit 58850,50在order by 的情况下 随着limit中的startPage越来越多,执行效率越来越慢 可能要1分钟,索引什么的都有加,执行计划看下图求优化方法

解决方案 »

  1.   


    //如果搜索条件跟排序不需要用到books,可以使用延迟查询
    SELECT a.*,b.title FROM 
    (
    SELECT id FROM chapter ORDER BY id DESC LIMIT 58850,50
    )c LEFT JOIN chapter a ON c.id = a.id
    LEFT JOIN books b ON a.bookId = b.id;
      

  2.   


    老哥,不行啊
    SELECT id FROM chapter ORDER BY id DESC LIMIT 58850,50
    这一段 都要50多秒
      

  3.   

    有个order by id desc 时间一下子就长了
      

  4.   

    带上where条件吧,你这看起来像业务数据,如果是的话,应该会有发生时间,你从近6W条数据中去筛选,完全可以加上一个时间段过滤条件,再去筛选