【项目实现典型案例】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

在这里插入图片描述

四:总结

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

相关内容

热门资讯

“10年体检未提示患癌”,爱康... 红星资本局年终盘点·2025关键角色③“北京市卫健委已经出声明了,爱康是无责的。”近日,当红星资本局...
中国神华:持股52%子公司北海... 新京报贝壳财经讯 中国神华公告称,其持股约52%的控股子公司北海电力二期扩建工程4号机组通过168小...
6000万元理财,牛市9个月亏... 12月26日晚间,圣元环保(SZ300867,股价19.69元,市值53.51亿元)披露投资进展公告...
面包刺客,正在失去年轻人 作者 |餐饮老板内参内参君动辄二三十元打工人连面包都快吃不起了?“今年的堂食客单价已经非常接近201...
AI大模型第一股 12月17日,北京智谱华章科技股份有限公司(智谱)与上海稀宇科技(MiniMax)双双通过港交所上市...
信用卡App逐步关停!银行线上... 银行信用卡线上服务渠道持续瘦身。近日,邮储银行宣布将逐步整合“邮储信用卡App”服务渠道,成为继中国...
晓数点|一周个股动向:电力股获... 本周(12月22日至26日)三大指数均累计上涨,沪指涨1.88%,深证成指涨3.53%,创业板指涨3...
2026,火锅的赚钱逻辑变了 总第4444期作者 |餐饮老板内参月半当下的火锅品类,早已不只是“好吃”这么简单了。2025年,火锅...
深康佳A和前任董事长收警示函,... 红星资本局12月28日消息,老牌家电企业深康佳A(000016.SZ)“子公司股东举报虚增业绩”风波...
“找厕所也要看眼避雷帖”,打工... 因为“避雷帖”,丽江古城旅拍协会跟小红书杠上了。12月23日,云南丽江市古城区文化和旅游局在公众号“...