数据库索引失效的场景

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 @ 2023-02-25 17:27  无敌小豆包  阅读(82)  评论(0编辑  收藏  举报