MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sql – 在与WHERE子句一起使用时优化Oracle CONNECT BY大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用同一查询中的WHERE条件之前,应用Oracle START WITH … CONNECT BY子句.因此,WHERE约束不会有助于优化CONNECT BY.

例如,以下查询可能会执行全表扫描(忽略dept_id的选择性):

SELECT * FROM employees 
WHERE dept_id = 'SALE'
START WITH manager_id is null
CONNECT BY PRIOR employee_id = manager_id

我试图以两种方式提高性能:

查询A:

SELECT * FROM employees 
START WITH manager_id is null AND dept_id = 'SALE'
CONNECT BY PRIOR employee_id = manager_id

查询B:

SELECT * FROM (
               SELECT * FROM employees 
                WHERE dept_id = 'SALE'
              )
START WITH manager_id is null
CONNECT BY PRIOR employee_id = manager_id

然这两个查询都比原来好得多,但在Oracle 10g第2版上,查询B的执行效果要好于A.

您是否有类似的性能优化来处理CONNECT BY和WHERE子句?你如何解释查询B比查询A好多了?

解决方法

查询A表示从销售部门的经理开始,然后获得所有员工. Oracle不会“知道”所有返回的员工都将在销售部门进行查询,因此在执行CONNECT BY之前不能使用该信息来减少要处理的数据.

Query B明确地将要处理的数据集合简化到SALEs中的那些员工,Oracle在执行CONNECT BY之前可以执行此操作.

大佬总结

以上是大佬教程为你收集整理的sql – 在与WHERE子句一起使用时优化Oracle CONNECT BY全部内容,希望文章能够帮你解决sql – 在与WHERE子句一起使用时优化Oracle CONNECT BY所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: