什么是慢查询?如何优化?

简介: 什么是慢查询?如何优化?

1. 什么是慢查询?

慢查询,顾名思义,就是比较慢的查询,那什么是算是慢查询呢?不同的公司对于慢查询的定义不尽相同。

一般情况下,我们把查询时间超过1s的查询称为慢查询。


2. 优化SQL来减少慢查询

2.1. 索引优化

慢查询非常多的情况是由于SQL没有走适当的索引导致的。但是,即使加上索引,如果使用不正确,SQL语句在执行时依然不会走索引。哪些情况下SQL语句不走索引呢?


1.WHERE条件中的1=1,查询条件永远为真,可能导致WHERE条件失效,进行全表查询;

2.使用函数或者隐式转化会导致不走索引;

3.LIKE匹配通配符号在前面的时候,不走索引;

4.使用了否定条件;

5.OR其中一个有索引,另一个没有的情况;

6.多列索引需要满足最左匹配原则;

7.两张表字符集不一样或者编码不一样,联表查询时;

8.IN的内容过多,会不走索引;


2.2 拆解分批

如果数据量比较大,则可以尝试拆解分批的方式来减少慢查询:

1.多层嵌套查询改为多次查询;

2.IN子查询影响查询性能,用JOIN方式代替;

3.一次查询数量过于庞大,拆成多次查询、拼装。

4.用了反向查询(比如NOT IN)或者IN语句参数集太多,可能会导致全表扫描,这种情况尽量拆分语句,或者内存中过滤解决;

5.将⼤字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据;

6.分库分表;

7.归档;


目录
相关文章
|
设计模式 监控 安全
JUC第一讲:Java并发知识体系详解 + 面试题汇总(P6熟练 P7精通)
JUC第一讲:Java并发知识体系详解 + 面试题汇总(P6熟练 P7精通)
3774 0
|
缓存 NoSQL Java
面试官:如何保证本地缓存的一致性?
面试官:如何保证本地缓存的一致性?
2585 1
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
48538 13
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
19924 2
|
安全 算法 Java
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
这篇文章讨论了Java集合类的线程安全性,列举了线程不安全的集合类(如HashSet、ArrayList、HashMap)和线程安全的集合类(如Vector、Hashtable),同时介绍了Java 5之后提供的java.util.concurrent包中的高效并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList。
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
|
12月前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
1901 15
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
430 7
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
127507 0
|
算法 Java Sentinel
限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现
> 本文会对这4个限流算法进行详细说明,并输出实现限流算法的代码示例。 > 代码是按照自己的理解写的,很简单的实现了功能,还请大佬们多多交流找bug。
1998 0