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

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

     

     

  • 相关阅读:
    项目冲刺之任务场景分析
    一位数组的最大子数组(debug版)
    软件工程课堂五(地铁项目的优化)
    人月神话阅读笔记02
    软件工程第七周总结
    人月神话阅读笔记01
    软件工程第六周总结
    构建之法阅读笔记03
    软件工程第五周总结
    软件工程课堂四(合作开发项目-地铁线路查询)
  • 原文地址:https://www.cnblogs.com/xiongmozhou/p/10776207.html
Copyright © 2011-2022 走看看