数据库索引失效的场景

1. 建表 

复制代码
create table t1 (
    a int PRIMARY key,
    b int,
    c int,
    d int,
    e varchar(20)
)ENGINE=INNODB

insert into t1 value(4,3,1,1,'d');
insert into t1 value(1,1,1,1,'a');
insert into t1 value(8,8,8,8,'h');
insert into t1 value(2,2,2,2,'b');
insert into t1 value(5,2,3,5,'e');
insert into t1 value(3,3,3,3,'c');
insert into t1 value(7,4,5,5,'g');
insert into t1 value(6,6,4,4,'f');
复制代码

 

   建立索引并查看  

-- 建立索引
create index idx_t1_bcd on t1(b,c,d);    # 组合索引
create index idx_t1_e on t1(e);        # 普通索引

-- 查看索引结构
show index from t1;

   索引结构

    

 

2. 索引失效的情况

  1. 违反最左匹配原则:指的第一个索引key必须出现,可以在不同位置

   

 

 

 

  2. 使用模糊查询like时,后置通配符 a% 有效,前置通配符 %a 失效

   

 

 

 

  3. 在索引上使用函数或者进行计算时,索引失效

   

 

  4. 索引进行了类型转换,索引失效

   

 

  5. 当出现<>,in或者not in 时,索引失效

   

 

 

 

  6. 使用order by排序时索引失效

   

 

 

 

   7. 使用or语句时,索引失效

   

 

 

 

  8. select * 没有条件时,索引失效

   

 

posted @   无敌小豆包  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示