首页 > 数据库技术 > 详细

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

时间:2020-09-04 20:57:15      阅读:75      评论:0      收藏:0      [点我收藏+]

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

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

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

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

技术分享图片

 

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

技术分享图片

 

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

技术分享图片

 

 

附:

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

技术分享图片

 

 

数值类型   10 比  9  大  返回1

技术分享图片

 

 

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

技术分享图片

 

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

技术分享图片

 

 

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

bbb  utf8;    bb_s   utf8mb4

 

技术分享图片

 

技术分享图片

 

 

-- 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.技术分享图片

 

 

2.

技术分享图片

 

 

3.

 

技术分享图片

 

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

原文:https://www.cnblogs.com/star521/p/13615549.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!