数据库索引优化案例

  1. order by不要用filesort,建立索引,将order放在最右边,就是排序好的。


    数据库索引优化案例_第1张图片

    查询语句及其explain
    两个点,一个是type=all,一个是Extra=using filesort。


    数据库索引优化案例_第2张图片

    尝试对where所有字段建立索引,然后explain,type好了一点,但是Extra=using filesort还在
    数据库索引优化案例_第3张图片

    思路:中间的>使得索引断了,order by不能利用索引的最后一个字段是排序的,我们只建立where前后的索引。可以看到下面,file sort没了。
    数据库索引优化案例_第4张图片
  2. 左右连接建立索引要建在被驱动表连接的列上,而且要小表驱动大表,调高join buffer


    数据库索引优化案例_第5张图片

    查询


    数据库索引优化案例_第6张图片

    给被驱动表book连接的列加上了索引后,被驱动表的type变为ref,row减小了。
    数据库索引优化案例_第7张图片

    给驱动表class连接的列加上索引后,驱动表的type变为index(也就是遍历索引),但是row不变。
    数据库索引优化案例_第8张图片

    左连接和右连接建立索引要加在被驱动表上,因为连接的原理就是对于驱动表的每一列,然后过滤被驱动表,被驱动表是要多次读取的。

你可能感兴趣的:(数据库索引优化案例)