yanruijie
用智能优化限制提高Oracle数据库性能
用已排序指示来指定一种连接排序
你可以设定优化器评估的排列数的上限。但是对复杂的情况下,即使允许的排列数很大,优化器也很可能在远远没有找到一个比较合适的排列之间就已经停止优化了。你不妨回头看看我前面举的那个例子(15个需要连接的表有超过一万亿种排列)。如果设定优化器考虑80,000种排列,那么这仅仅考虑了所有可能性的0.000006%,优化器极可能没有达到最佳的排列。
在Oracle SQL中解决这个问题的最好方法就是手工指定一种表格连接顺序。这里需要遵循的大原则就是表格连接顺序应该使得查询计划尽快得以建立,通常在SQL语句中使用WHERE限制子句。
下面以一个对名为emp的表格的并行查询为例,例子中的代码强制查询计划执行一个嵌套循环连接(nested loop join)。注意,我使用了已排序指示来引导优化器来评估WHERE子句中给出的表格的连接顺序。
select /*+ ordered use_nl(bonus) parallel(e, 4) */
e.ename,
hiredate,
b.comm.
from
emp e,
bonus b
where
e.ename = b.ename
;
更多软考资料请访问:考试吧软件水平考试栏目
希望与更多网友交流,请进入考试吧软件水平考试论坛
转帖于:软件水平考试_考试吧
- 推荐给朋友
- 收藏此页
·用脚本和查询主动监视Oracle 9i性能 (2007-1-25 16:21:06)
·教你调整Oracle数据库服务器的性能 (2007-1-25 16:15:36)
·SQL SERVER优化建议 (2007-1-25 16:13:03)
·Oracle SQL语句优化技术分析 (2007-1-25 16:09:20)
·Excel数据透视表使用方法精要12点(中文对照) (2007-1-25 16:06:31)
·Oracle数据库性能优化技术 (2007-1-25 16:00:58)
·教你调整Oracle数据库服务器的性能 (2007-1-25 16:15:36)
·SQL SERVER优化建议 (2007-1-25 16:13:03)
·Oracle SQL语句优化技术分析 (2007-1-25 16:09:20)
·Excel数据透视表使用方法精要12点(中文对照) (2007-1-25 16:06:31)
·Oracle数据库性能优化技术 (2007-1-25 16:00:58)