码迷,mamicode.com
首页 > 其他好文 > 详细

条件优化技术

时间:2014-08-16 16:33:51      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   os   时间   size   sql   on   sp   技术   

条件:

对元组进行过滤和连接的表达式,形式上是出现在WHERE/JOIN-ON/HAVING的子句中的表达式


1、条件下推

把与单个表相关的条件,放到对单表进行扫描的过程中执行。


2、条件化简

针对:WHERE、HAVING和JOIN-ON条件由许多表达式组成,而这些表达式在某些时候,彼此之间存在一定的联系

(1)having条件并入where条件

不是任何情况下HAVING条件都可以并入WHERE条件,只有在SQL语句中不存在GROUPBY条件或聚集函数的情况下,才能将HAVING条件与WHERE条件的进行合并。

好处:便于统一、集中化解条件子句,节约多次化解时间


(2)去除表达式中冗余的括号

可以减少语法分析时产生的AND和OR树的层次。---减少CPU的消耗 

 ((a AND b) AND (c AND d))  ==》 a and b and c and d


(3)常量传递

对不同关系可以使得条件分离后有效实施“选择下推”,从而可以极大减小中间关系的规模。

 col_1 = col_2 AND col_2 = 3  => col_1 = 3 and col_2 = 3

操作符“=、<、>、<=、>=、<>、<=>、LIKE”中的任何一个,在“col_1 <操作符> col_2”条件中都可能会发生常量传递


(4)消除死码

化简条件,将不必要的条件去除

WHERE(0 > 1 AND s1 = 5) ==》 where s1=5


(5)表达式计算

WHERE col_1 = 1 + 2   ==》 where col_1 = 3


(6)等式变换

化简条件(如反转关系操作符的操作数的顺序),从而改变某些表的访问路径

 -a = 3 =》 a = -3 ,可以走索引


(7)不等式变换

化简条件,将不必要的重复条件去除。 

 a > 10 AND b = 6 AND a > 2   =》  b = 6 AND a > 10 


(8)布尔表达式变换
A、谓词传递闭包


B、布尔表达式被转换为一个等价的合取范式(CNF)


C、索引利用






条件优化技术,布布扣,bubuko.com

条件优化技术

标签:style   os   时间   size   sql   on   sp   技术   

原文地址:http://my.oschina.net/scipio/blog/302332

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!