zoukankan      html  css  js  c++  java
  • MySQL--索引优化

     

    优化口诀:

    全值匹配我最爱,最左前缀要遵守;

    带头大哥不能死,中间兄弟不能断;

    索引列上少计算,范围之后全失效;

    Like百分写最右,覆盖索引不写星;

    不等空值还有or,索引失效要少用;

    VAR引号不可丢,SQL高级也不难!


     

    “全值匹配我最爱”

     

    “带头大哥不能死”,火车头可以单独跑,车厢不能单独跑

    “最左前缀要遵守”,组合索引:name,Age,Pos,但是只有当最左侧的name存在时,索引才有效

     

    “中间兄弟不能断”

    Type=ref 绝对用到了索引

    Possible_keys=idx_staffs_nameAgePos 可能用到了索引

    Key = idx_staffs_nameAgePos 实际上用到的索引

    但是是全职匹配的部分使用,因为如果用到了索引中的两个,key_len应该等于78,ref应该等于const,const

     

    “范围之后全失效”,范围只能用到一部分排序,而不能用到查找

     

    尽量使用覆盖索引,减少select *

     

    在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描

     

    Is null ,is not null 也无法使用索引

     

    百分like加右边

     

    少用or,否则索引失效

     

    索引最好怎么建的怎么用,这样避免mysql底层翻译和转换

     

    字符串不加单引号索引失效

     

    数据库会把2000隐式的自动的转换为String类型,但是在索引列上做任何操作(计算,函数,(自动or手动)类型转换),会使索引失效

     

    问题:如何解决like‘%字符串%’时索引不被使用的方法?

    答:使用覆盖索引,建的索引和查的字段个数顺序最好完全一致

     

     

  • 相关阅读:
    canvas_13 绘制图像
    canvas_12 径向渐变
    银行卡账号识别
    python sort
    直方图 与 均衡化
    轮廓检测 与 模板匹配
    Canny边缘检测
    pytorch opencv基础
    全局特征、局部特征 maxpool
    One-shot learning
  • 原文地址:https://www.cnblogs.com/xiongmozhou/p/10776207.html
Copyright © 2011-2022 走看看