【项目实现典型案例】12.数据库数据类型不一致导致查询慢

简介: 【项目实现典型案例】12.数据库数据类型不一致导致查询慢

一:背景介绍

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

四:总结

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


相关文章
|
24天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
NoSQL Java 数据库
【问题篇】springboot项目通过数据库限制实例端口号
【问题篇】springboot项目通过数据库限制实例端口号
19 0
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
67 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
24天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
3天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
4天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
8天前
|
SQL 关系型数据库 MySQL
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
18 2
|
9天前
|
SQL 监控 druid
Druid数据库连接池简介及应用推广(老项目翻出来做下记录)
Druid数据库连接池简介及应用推广(老项目翻出来做下记录)
|
10天前
|
SQL 存储 Oracle
关系型数据库查询数据的语句
本文介绍了关系型数据库中的基本SQL查询语句,包括选择所有或特定列、带条件查询、排序、分组、过滤分组、表连接、限制记录数及子查询。SQL还支持窗口函数、存储过程等高级功能,是高效管理数据库的关键。建议深入学习SQL及相应数据库系统文档。
9 2

热门文章

最新文章