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、%加尽量右边

小总结

相关推荐
Murphy_lx1 分钟前
较为深入的了解c++中的string类(2)
java·c++·算法
一只鱼^_2 小时前
牛客周赛 Round 99
java·数据结构·c++·算法·贪心算法·动态规划·近邻算法
李白洗一夜2 小时前
(新手友好)MySQL学习笔记(12):触发器,视图,三范式
笔记·学习·mysql
玩代码3 小时前
CompletableFuture 详解
java·开发语言·高并发·线程
ladymorgana3 小时前
【数据库】PostgreSQL 与 MySQL 全方位对比
数据库·mysql·postgresql
张璐月3 小时前
mysql 散记:innodb引擎和memory引擎对比 sql语句少用函数 事务与长事务
数据库·sql·mysql
noravinsc4 小时前
django queryset 去重
数据库·django·sqlite
人生在勤,不索何获-白大侠4 小时前
day21——特殊文件:XML、Properties、以及日志框架
xml·java·开发语言
望获linux5 小时前
【实时Linux实战系列】硬实时与软实时设计模式
linux·运维·服务器·数据库·操作系统·rtos·嵌入式软件
Dcs6 小时前
用不到 1000 行 Go 实现 BaaS,Pennybase 是怎么做到的?
java