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

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

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.归档;


目录
相关文章
|
7月前
|
关系型数据库 MySQL
18. 如何定位慢查询 ?
如何定位MySQL慢查询?可以通过两种方式开启慢查询日志:修改`my.ini`配置文件并重启MySQL,或设置全局变量。在配置中需包含`log_output='FILE,TABLE'`,`slow_query_log='ON'`和`long_query_time=0.001`(1毫秒)。
48 0
|
1月前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
46 3
|
1月前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
52 2
|
5月前
|
SQL 存储 数据库
使用explain优化慢查询的业务场景分析
• 子查询 e 现在使用 range 类型扫描,只获取2023年的注册记录,减少了行数。 • 主查询现在使用 ref 类型联结,因为子查询结果已经通过索引 student_id 进行了优化。 通过这些步骤,我们对原始查询进行了分析和优化,减少了需要处理的数据量,提高了查询效率。在实际应用中,可能需要根据具体的数据库结构和数据分布进行更多的调整和优化。 最后
51 0
慢查询的几种原因?
慢查询的几种原因?
|
SQL 算法 关系型数据库
慢查询日志和深度分页问题
慢查询日志和深度分页问题
|
开发工具 开发者
慢与快
我经常跟我的学员这样说:对于学习做游戏这件事情,大家要放平心态,不用着急,我给大家提供一年时间的服务,所以你大可以慢慢来。如果你的时间充足的话,就制定一个为期较短的计划。如果你工作比较忙,时间不够的话,那么就制定一个比较宽松的计划。最重要的是不要停,不要半途而废,不要就此放下。想一下,如果你能够在一年的时间里学会并掌握一门新技能,那也是相当不错的了。
83 0
|
SQL 监控 关系型数据库
慢查询日志|学习笔记
快速学习慢查询日志
129 0
慢查询日志|学习笔记