MySQL索引效验及失效场景

16 篇文章 1 订阅

目录

索引失效场景:

 1. 索引失效场景1

 2. 索引失效场景2

3. 索引失效场景3

4. 索引失效场景4

5. 索引失效场景5

6. 索引失效场景6


 

查看当前执行是否走的时候索引:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_13,color_FFFFFF,t_70,g_se,x_16 

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

key idx_address(address) 普通索引,索引名为idx_address

key idx_sn_name_age(sn,name,age) 联合索引,一个索引,三个字段。

联合索引注意:字段创建的先后顺序会影响索引的执行。

索引失效场景:

(bs)

 1. 索引失效场景1

        联合索引不满足最左匹配原则(前缀匹配):在联合索引查询中,查询语句必须要以联合索引最左边的字段开始查询,这时联合索引才有效,否则联合索引不会生效。

举例:sn + name + sge   A表示sn,B表示name,C表示name

1.1 联合查询顺序:A + B + C (满足最左匹配原则,可以使用联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.2 联合查询顺序:A + B (满足最左匹配原则,可以使用联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.3  联合查询顺序:A + C (满足最左匹配原则,触发联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.4  联合查询顺序:A  (满足最左匹配原则,触发联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.5 联合查询顺序:B+  A (满足最左匹配原则,可以使用联合索引) 

1.6 联合查询顺序:B (不满足最左匹配原则,不可以使用联合索引) 

1.7 联合查询顺序:C (不满足最左匹配原则,不可以使用联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.8 联合查询顺序:B + C (不满足最左匹配原则,不可以使用联合索引) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

联合索引的值是最左边的值,因此只要有A就可以满足最左匹配原则,使用联合索引。 

 2. 索引失效场景2

使用错误模糊查询

like 模糊查询的常用方式:

        1. 前面确定 ----》 字段名 like '张%'

        2. 中间确定 ----》 字段名 like '%张%'

        3. 后面确定 ----》 字段名 like '%张'

1 可以触发索引,2、3不可以触发索引

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

3. 索引失效场景3

索引查询列使用运算操作(+/-/*//)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

4. 索引失效场景4

查询的列使用了函数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

5. 索引失效场景5

查询的列使用了隐式的类型转换

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

6. 索引失效场景6

使用is not null

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPYml0fg==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值