Oracle兼容之层次查询:层次查询高级特性分析
2008-09-04 12:50:44 来源:WEB开发网在使用层次查询时,需要对数据层次图中的环进行处理以避免结果集的循环;需要对层次查询中where语句提出的过滤条件进行考虑;还需要注意层次查询的性能;本文将就层次查询中环的判断与处理,层次查询中过滤条件的处理以及性能的提高进行分析。
Selectlevel,connect_by_iscycle,connect_by_isleaf,parent,value
Fromt1
Connectbynocyclepriorvalue=parent
Startwithparent=1;
查询的结果为:
LEVELCONNECT_BY_ISCYCLECONNECT_BY_ISLEAFPARENTVALUE
-----------------------------------------------------------------
10012
20023
31135
30136
20124
由结果来看,元组(3,5)的CONNECT_BY_ISCYCLE的值为1,屏蔽掉了其子结点(5,2),而(5,2)并没有出现在其祖先结点中,但(5,2)的VALUE列的值2在其祖先结点(1,2)中已经出现过了。
由此推断,Oracle中层次查询的环的判断标准并不是判断子结点整个元组是否出现在祖先元组中,而是根据连接条件中表示父结点的PRIOR关键字标注的表达式的值是否在祖先结点中出现来进行判断的。
2.层次查询过滤条件的处理
层次查询语法中,使用WHERE语句来对层次查询的结果进行过滤,本节将就层次查询语句中的WHERE语句的处理进行分析。
2.1 单表层次查询过滤条件的处理
对单表进行层次查询时,WHERE语句只负责过滤数据,在得到层次查询的结果集进行判断,将满足WHERE语句指定的逻辑表达式的元组返回。
2.2 多表层次查询过滤条件的处理
对多表进行层次查询,层次查询的直接对象是多个表连接之后的数据集。而WHERE语句中的逻辑表达式如何处理是个问题。有两种合理的处理方式:
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接