SQL实战之索引失效案例详解

文章目录

总体原则

sql 复制代码
	1、全值匹配我最爱
	2、最佳左前缀法则:指的是查询从索引的最左前列开始且不跳过索引中的列。(带头大哥不能死,中间兄弟不能断)
	3、不在索引列上做任何操作(计算、函数、自动or手动类型转换),会导致索引失效而转向全表扫描type=all(索引列上少计算)
	4、不能使用索引中范围条件右边的列(范围之后全失效)
	5、尽量使用覆盖索引(索引列和查询列一致),(尽量减少使用select *)
	6、like以通配符开头mysql索引失效会变成全表扫描的操作 (like %加右边)
	7、字符串varchar不加单引号索引失效(字符串里留引号)
	8、is null,is not null, or, != 无法使用索引会导致全表扫描

              SQL索引优化口诀
        全值匹配我最爱,最左前缀要遵守;
        带头大哥不能死,中间兄弟不能断;
        索引列上少计算,范围之后全失效;
        LIKE百分写最右,覆盖索引不写星;
        不等空值还有or,索引失效要少用;
        VAR引号不可丢,SQL高级也不难!

案例一:索引第一个字段不能丢,否则索引失效

新建索引:ALTER TABLE staffs ADD INDEX idx_ staffs nameAgePos(name, age, pos),

案例二:索引列上少计算

案例三:范围之后全失效

案例四:尽量少使用select *、不等于(!=或者<>)、is null,is not null、%加尽量右边

小总结

相关推荐
程序员清风11 小时前
基于 Spring Boot 构建生产级 AI 应用平台
大数据·人工智能·spring boot
芯次元玩家11 小时前
技术岗转物联网解决方案架构师,行业洞察、商业模式该从哪开始学?
java·开发语言
EatFan11 小时前
Spring Boot 4 升级避坑指南:依赖变化、Undertow 弃用、4.0.5 补丁与 Java 25 虚拟线程落地
java·spring boot·微服务·虚拟线程·spring boot 4
细嗅蔷薇@11 小时前
DDL常见操作汇总
数据库·sql·mysql
颜颜yan_11 小时前
从 InfluxDB 到 DolphinDB:一场国产时序数据库的替代与超越
数据库·时序数据库
卓怡学长11 小时前
w213基于Spring Boot框架的Web安全学习系统的设计与实现
java·spring boot·spring·web安全·intellij-idea
Zhou14113611 小时前
MyBatisPlus_02_条件构造器与高级功能
java·开发语言·python
垚垚学技术_聚焦云原生11 小时前
Ansible Role 生产环境标准目录结构与规范化实践
java·elasticsearch·ansible
霸道流氓气质11 小时前
Spring AI Alibaba Graph Studio 入门指南:可视化Agent编排与调试平台
java·人工智能·spring
-madongyu-12 小时前
GaussDB SQL 执行引擎:查询重写、优化器与执行器
数据库·sql·gaussdb