Oracle兼容之层次查询:层次查询高级特性分析
2008-09-04 12:50:44 来源:WEB开发网核心提示: 首先需要说明一下逻辑表达树的结构,逻辑表达式可以转化为一个树结构,Oracle兼容之层次查询:层次查询高级特性分析(10),例如(a=b or b=1)and c=d and d=1这样的逻辑表达式,它转化之后的逻辑表达树应如图6所示,对于上面的逻辑表达式,我们可以试着分析当其在层次查询的
首先需要说明一下逻辑表达树的结构,逻辑表达式可以转化为一个树结构,例如(a=b or b=1)and c=d and d=1这样的逻辑表达式,它转化之后的逻辑表达树应如图6所示。
之后就可以根据简单情况下的策略来决定各个分支的策略。我们根据得到的标准分析这个逻辑表达式(假设a、b属于不同的表,c、d属于不同的表)如图7所示。
虚线:类型1布尔表达式 A类型子句
实线:类型2布尔表达式 B类型子句
可以根据得到的4条标准删除表达式中不需要作为过滤条件的单个逻辑表达式构成一个新的逻辑表达式,再对其进行一定的调整得到作为connect by查询之后的过滤条件的新的逻辑表达式。同样的,删除不能作为连接条件的单个逻辑表达式,调整之后得到新的作为连接条件的逻辑表达式。
对于上面的逻辑表达式,我们可以试着分析当其在层次查询的WHERE语句出现时的处理方式。删除一定的单个逻辑表达式之后,作为过滤条件的逻辑表达式的结构如图8所示:
调整之后
调整之前
而作为连接条件的逻辑表达式的结构如图9所示:
[]
更多精彩
赞助商链接