【项目实现典型案例】12.数据库数据类型不一致导致查询慢
创始人
2025-05-28 09:04:11
0

目录

  • 一:背景介绍
  • 二:索引失效复现
  • 四:索引实现的六种情况
    • 1、类型转换,函数
    • 2、ISNULL
    • 3、通配符开头
    • 4、范围查询
    • 5、组合索引,不符合最左匹配原则
    • 6、WHERE子句中的OR
  • 四:总结

一:背景介绍

MySql数据库的is_delete字段,两个不同的表,一个表内有217069条数据,另一个表中有76015条数据,查询速度很慢,排查到是索引失效的问题。
在这里插入图片描述
在这里插入图片描述

二:索引失效复现

where条件里,字符类型的列如果传递的是数据类型的话可以查出来数据,但是索引会失效
对应的索引
在这里插入图片描述
表中字段的数据类型
在这里插入图片描述
使用数值型进行查询
在这里插入图片描述
type中的ALL代表全表查询,用结果上来看我们添加的索引是没有生效的。因为我们在执行sql语句的时候is_delete赋的值是数值类型,但是数据库中是字符类型。所以进行了类型的转换。导致索引是没有生效的。
使用字符型进行查询
在这里插入图片描述
type中从ALL转换成了ref,索引失效了

四:索引实现的六种情况

1、类型转换,函数

在这里插入图片描述

2、ISNULL

在这里插入图片描述

3、通配符开头

在这里插入图片描述

4、范围查询

在这里插入图片描述

5、组合索引,不符合最左匹配原则

假设我们对字段 a,b 建立了一个组合索引(a,b)。
如果我们的查询是以下几种,则会正常走联合索引:

where a = 1;
where a = 2 and b = 2;
如果是如下几种则不会走组合索引:

where b = 2;
where b = 2 and a = 3;
通过对比我们可以看出,索引的生效是遵循最左匹配原则的。在使用的时候,必须从最左侧的索引开始。

6、WHERE子句中的OR

在这里插入图片描述

四:总结

遇到该类问题,要先明确什么是索引,以及哪种情况下会导致索引失效。

相关内容

热门资讯

时隔七年,美国正式重开驻委内瑞... 美国国务院周一(3月30日)宣布,在关闭七年后,正式重开美国驻委内瑞拉大使馆。在此之前(3月28日)...
冠名+1,“唐纳德·特朗普国际... 美国佛罗里达州共和党籍州长德桑蒂斯30日签署一项法案,决定将该州棕榈滩国际机场更名为“唐纳德·特朗普...
原创 6... 特朗普之前曾信誓旦旦地宣称美国的军事力量已经成功摧毁了伊朗99%的导弹能力,而仅仅过了短短的时间,伊...
隆平高科等投资成立新公司,含A... 5月21日消息,企查查APP显示,近日,隆平开鸿农业科技(北京)有限公司成立,注册资本8500万元,...
日本对美出口4个月来首降,汽车... 5月21日消息,日本财务省5月21日公布4月贸易统计初值,对美国出口较上年同期下滑1.8%至1.77...
外交部:欧方应当停止损害中国企... 5月21日消息,今天,外交部发言人毛宁主持例行记者会。有记者问:欧盟和英国20日分别宣布对俄罗斯实施...
印尼央行将7天期逆回购利率下调... 5月21日消息,印尼央行将7天期逆回购利率下调25个基点至5.5%,符合市场预期。
山东钢铁:设立销售子公司完成工... 5月21日消息,山东钢铁公告,为更好地发挥企地协同优势,优化区域经营和市场布局,公司拟在山东省济南市...
汽车整车股震荡走强,比亚迪涨超... 5月21日消息,比亚迪涨超2%创历史新高,江铃汽车、江淮汽车涨超3%,赛力斯、中国重汽、上汽集团、福...
腾讯集团汤道生:腾讯持续加大A... 5月21日消息,腾讯云AI产业应用峰会今日在北京举办。腾讯集团高级执行副总裁、云与智慧产业事业群CE...