• 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‘%字符串%’时索引不被使用的方法?

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

     

     

  • 相关阅读:
    按钮-全选复选框 PENGHAO
    ASP.NET技术内幕的电子书中文版 PENGHAO
    hotmail和gmail 邮件中背景图片无效不显示的解决办法
    Silverlight之DataGrid的列格式化日期
    MS SQL基础
    JS获得当前地址栏url
    Javascript实现复制到剪贴板
    C#.NET画验证码与Cookie验证
    网站部署与定制
    操作SQL数据库常用语句
  • 原文地址:https://www.cnblogs.com/xiongmozhou/p/10776207.html
Copyright © 2020-2023  润新知