SQL优化三板斧:精简之道、驱动为王、集合为本
再次执行,耗时2:28,虽然与秒级的性能要求相距甚远,但是至少性能提升了近50%,其意义并在于提升的效果,而在于证明了优化方向是正确的,即在大表林立群狼环视虎视眈眈的环境中,要快速准确的定位出驱动表,需要明确将驱动表数据准备好. 第三板斧:神工鬼斧性能尚未达标,优化仍需继续. 先看看执行计划: 从COST列,并没有看到成本特别高的操作.所以,我放弃了继续在执行计划上做文章,转而深入分析SQL代码逻辑. 经过一番抽丝剥茧起承转合后,SQL的整体代码逻辑也呼之欲出,发现顶层的逻辑设计非常简单明了,就是三个子查询的结果集内连接,如下图所示: 接下来,我做了一件被人“鄙视”的小儿科的事,就是分别执行了这三个子查询.原本想着总会有一个慢的,我就重点优化慢的那个子查询.而结果却出人意表,三个子查询都是在2S左右就能完成执行,而且数据量都在1万以内.那为何三个子查询关联在一起,性能会如此受影响呢?要知道,如果是三个1万以内的表关联,即便是无任何索引,那也是秒出呀. (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |