数据库索引失效的场景
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 * 没有条件时,索引失效
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)