暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL索引失效情况汇总

风济海 2021-07-25
928
不正确的使用索引会导致索引失效,具体情况如下:

1、使用了负向查询,负向查询条件:NOT、NOT IN 、NOT LIKE、!=、<>等,如(索引列:column1 ):
    select column1,column2,column3 from table where column1 !='xxx'


    2、使用了%开头的模糊查询,如(索引列:column1 
      select column1,column2,column3 from table where column1='%xxx'
      或者:
        select column1,column2,column3 from table where column1='%xxx%' 


        3、使用了函数或计算,如(索引列:column1 
          select column1,column2,column3 from table where DAY(column1)=xxx



          4、使用了or,且其条件不带索引,且其他条件带索引,索引也不生效,如(索引列:column2 
            select column1,column2,column3 from table 
            where column1='xxx' or column1='yyy' and column2='zzz'
            查询时应尽量避免使用or,可以考虑用in代替。

            5、使用了非同类型比较查询,比如,列类型是字符串,那边查询的时候,要将数据用引号引起来,避免隐式转换导致索引失效,如(列:column1 类型为字符串
              select column1,column2,column3 from table where column1=1234567


              6、使用联合索引,如:union_index_abc(a,b,c)
                  1)查询时条件只有b或c或b和c。
                  2)查询时某个列是范围查询,则其右边所有列都无法使用索引。
                  需满足最左匹配原则。

              7、JOIN操作中on列的类型不一致

              8、如果某个列里包含许多重复的值,即使给该列建立了索引也不会有很好的效果。比如说,如果某个列的值是“0/1”,这种列值的离散性太低,没有必要为它建一个索引。



              原创不易,如果觉得本文对你有用,请点击一个「在看」,这是对作者最大的支持,谢谢~



              文章转载自风济海,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论