索引失效案例总结
索引失效原则
1. 复合索引跨列无序使用 2. 复合索引中使用!=、<、>、NOT NULL、IS NOT NULL等会导致自身以及右侧索引失效 3. 对索引列进行操作包括但不限于函数、计算、类型转换 4. LIKE关键字进行模糊匹配查询中模糊匹配符号居左会导致自身以及右侧索引失效 5. 进行避免使用IN关键字(查询内容超过总内容30%转为全表查询会导致索引失效),OR关键字(会导致右侧索引失效)
索引失效的例子
复合索引(a,b,c) 1. where a=3 and b=5 and c=4; 【a,b,c 走索引】 2. where c=4 and b=6 and a=3; 【c,b,a 底层自动优化 走索引】 3. where a=3 and c=7; 【a走索引,c跨列使用不走索引】 4. where a=3 and b>7 and c=3; 【a,b走索引,b索引是范围值但阻塞了c,c不走索引】 5. where b=3 and c=4; 【b、c跨列使用,不走索引】 6. where a>4 and b=7 and c=9; 【a走范围索引,阻塞了b、c,b、c不走索引】 7. where a=3 order by b; 【a、b走索引】 8. where a=3 order by c; 【a走索引,c跨列使用不走索引】 9. where b=3 order by a; 【b跨列使用导致b、a都不走索引】 单列索引(age) where age = 20; 【走索引】 where age+10 = 30; 【不走索引】 where age = 30-10; 【走索引】 where concat('sname','age') = 'test'; 【不走索引】 where age = concat('sname','test'); 【走索引】 单列索引(name) where name like '前缀%' 【走索引】 where name like '%后缀' 【不走索引,扫描全表】 字符串列与数字比较 ★ 【字符串 = 数字】不走索引 INDEX('a' char(10)) where a = '1'; 【走索引】 where a = 1; 【不走索引】 INDEX('b' int) where b = '1'; 【走索引】 where b = 1; 【不走索引】
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2020-09-08 Java面向对象-封装、继承、多态