请问两个语句区别唯一在limit之后的数字,那为什么explain的extra一个是filesort另外一个  不是呢?

解决方案 »

  1.   

    您是怎么看的!眼花了?
    第一个 type: ALL
    第二个 type: indexindex 表示有索引被使用,所以就不需要再有临时文件用于排序了
      

  2.   

    用的是同样的语句啊 差别就在于limit后的数字而已,所以问题在于为什么第一个会使用文件排序,为什么第二个是使用索引呢
      

  3.   

    第二个命中索引了,所以type=index
    第一个是type=all 表示全表扫描或者范围扫描:不使用索引,顺序扫描,直接读取表上的数据(访问数据文件)
      

  4.   

    MySQL的分页查询通常都离不开limit帮忙,而其中的关键主要围绕以下两点:
    1. 尽量减小limit的offset,即较小“limit m, n”里面的“m”。
    2. 仅先定位offset的id,再查需要的limit数据。
    优化方法可以参考这里:
    http://blog.csdn.net/gengv/article/details/5707323
    https://zhidao.baidu.com/question/2053312979993633227.html
      

  5.   

    1. 尽量减小limit的offset,即较小“limit m, n”里面的“m”。
    因为这样会效率低。