MySQL查询优化

2020-09-09  本文已影响0人  第九宇宙的声音

系统运行时间久了,会发现随着数据越来越多,查询越来越慢了

MySQL通过各种配置可以优化,当配置优化不好或不太懂各种配置的时候,用本文的方法相信会有所帮助。

【临时表优化】

MySQL对临时表支持很好,对于一些逻辑清晰的查询,如果发现存在以下情况,可以考虑用临时表优化:

1. Join超过5个,且Join的逻辑比较复杂,比如Join的聚合查询

2. 明确的数据分割,比如查询的数据明确按公司分割

优化方法很简单,创建临时表并用临时表进行再次查询,比如:

Select xxx

From Table1

Inner Join (Select xxx Table2 Group By xxx) On xxx

Inner Join Table3 On xxx

Inner Join Table4 On xxx

改成使用临时表查询

Create Temporary Table T_Table1 as Select xxx From Table1 Where XXX;

Create Temporary Table T_Table2 as Select xxx From Table2, Table 3 Where XXX;

Select XXX

From T_Table1

Inner Join T_Table2 On xxx

Inner Join Table4 On xxx

改变之后,查询速度可能会有指数级的提升。

不过也有个 缺点,CPU会提升不少。

【预处理方式】

对于一些实时要求不是很高,统计类的复杂查询来说,用预处理会特别有用,比如:

Select

子查询1  BI1,

子查询2  BI2,

子查询3  BI3

From Table1

可以创建一个预处理表进行优化,比如 BI_Table1包含BI1,BI2,BI3 三个字段

Insert BI_Table1(Key,BI1,BI2,BI3) As

Select Key,子查询1,子查询2,子查询3 From Table1;

Select BI1,BI2,BI3

From Table1

Left Join BI_Table1

这种方式通常用于BI数据处理,设置一个定时任务执行预处理。

在项目实践中,从30秒才能查询出来,提升到了0.5秒!

上一篇 下一篇

猜你喜欢

热点阅读