008.mysql-mysql索引失效几种场景

1.对过滤字段进行了函数处理

对字段做了函数计算,就用不上索引了

比如对时间类型的处理  select month(now())

2.发生了字段类型的隐式转换---尤其在存数据期时一定要注意,为数值类型

008.mysql-mysql索引失效几种场景

 

过滤值为字符型--走索引

008.mysql-mysql索引失效几种场景

 

 过滤值为数值型--字段的vachar发生隐式转换  相当于执行了函数 cast (‘10‘   as  signed int ),不走索引

008.mysql-mysql索引失效几种场景

 

 

附:

字符类型         ‘10‘ 比  ‘9‘  小    返回0

008.mysql-mysql索引失效几种场景

 

 

数值类型   10 比  9  大  返回1

008.mysql-mysql索引失效几种场景

 

 

在数据库中如果一个是varchar  一个是int,  发生隐式转换

008.mysql-mysql索引失效几种场景

 

 相当于 cast (‘10‘   as  signed int )

008.mysql-mysql索引失效几种场景

 

 

3.关联时失效---字符集类型不同

bbb  utf8;    bb_s   utf8mb4

 

008.mysql-mysql索引失效几种场景

 

008.mysql-mysql索引失效几种场景

 

 

-- utf8   =  utf8b4  走索引
explain 
select 
a.*,b.*
from gaoshuiwei a 
,gaoshuiwei b 
where a.bbb = b.bb_s and a.bbb  = 127


-- utf8b4    = utf8  不走索引
explain 
select 
a.*,b.*
from gaoshuiwei a 
,gaoshuiwei b 
where a.bb_s = b.bbb and a.bbb = 127

-- utf8b4 转为utf8   = utf8   走索引
explain 
select 
a.*,b.*
from gaoshuiwei a 
,gaoshuiwei b 
where CONVERT(a.bb_s USING utf8) = b.bbb and a.bbb = 127

1.008.mysql-mysql索引失效几种场景

 

 

2.

008.mysql-mysql索引失效几种场景

 

 

3.

 

008.mysql-mysql索引失效几种场景

 

008.mysql-mysql索引失效几种场景

上一篇:Qt 之使用mysql数据库 循环操作查询和插入嵌套时遇到崩溃的问题


下一篇:Centos7.Net Core网站通过Nginx配置https