SQL优化很难怎么办?给你一个简单暴力的办法

原文链接: https://shop42509167-38.youzan.com/wscvis/knowledge/index?kdt_id=42316999\x26amp;p=columnshow\x26amp;alias=2froywfz558sn\x26amp;qr=paidcolumn_2froywfz558sn#/columnshow?kdt_id=42316999\x26amp;p=columnshow\x26amp;alias=2froywfz558sn\x26amp;qr=paidcolumn_2fr

导读:

本文节选自松华老师的《SQL优化专栏》

郑松华,知数堂SQL 优化班老师 

现任 CCmediaService DBA,主要负责数据库优化相关工作

擅长SQL优化 ,数据核对

想阅读更多内容请点击订阅专栏

SQL优化很难怎么办?给你一个简单暴力的办法_第1张图片


大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子

今天给大家带来一个比较简单SQL优化案例,来分析一下开发人员 经常感到不解一个问题—— 视图合并导致的SQL变慢

例如:
一个运维人员(这里的运维指的是,在现有的系统上,进行 稍微修改)
因为业务上的改变,在原有的SQL上添加了一个条件,结果原来运行很快的SQL有可能变慢,甚至会发生time out (当然导致这种情形的原因很多,种类也比较多)这里只讨论一种情况即 视图合并导致的SQL变慢
本文讲的只是一种情况,若想从根本上解决这类问题,需要熟练掌握执行计划。

 
   

有如上表和数据,原来的运行的SQL 如下

 
   

若原来的SQL 会运行很快,没有问题。

但由于后来业务上的改变需要添加一些条件

修改之后的SQL 如下

 
   

假设修改后导致变慢了 !

如果碰到,这类问题,该怎么办呢?

最简单的方法是比较修改前后的执行计划,

然后发现不同之处,修改成原来的执行计划就可以。

以这个案例为例,修改前:

 
   

修改后:

 
   

发现执行计划改变了,

1.那我们可以使用hint 或者 视图巩固的方法进行固定就可以。

2.更深层的就需要分析统计信息,是否相对真实的反映了当前的数据量。

3.也有可能,如果数据倾斜比较严重,就需要引入直方图等等。

如果说,这些知识我都不会,我就想简单,直接,有效的方法,那怎么办呢?

以上述例子为例,就是单指有视图的情况!

添加一个 limit 10000000000000

大部分情况下能保证:假设原来的SQL很快,修改之后也很快

修改成如下 :

 
   

如此也能解决问题!

谢谢大家~ 欢迎转发

如有关于SQL优化方面疑问需要交流的,请加入QQ群579036588),并@骑兔子的龟 就可与我联系

更多松华老师文章推荐:
有趣的SQL(一)
有趣的SQL(二)两个表没连接条件的JOIN


END


点击下图小程序订阅
《SQL优化专栏》
get更多优化技能

SQL优化很难怎么办?给你一个简单暴力的办法_第2张图片

640?wx_fmt=png


SQL优化很难怎么办?给你一个简单暴力的办法_第3张图片

扫码加入MySQL技术Q群

(群号:579036588)

   SQL优化很难怎么办?给你一个简单暴力的办法_第4张图片

你可能感兴趣的:(SQL优化很难怎么办?给你一个简单暴力的办法)