oracle:优化2----使用hints,加速生成执行计划
利用oracle执行计划机制 提高 查询性能。
这是从快速生成执行计划的角度来优化性能,适用多表查询的情况,使用Optimizer hints可以手动指定多表的连接顺序以及连接方式。
使用hints的缺点就是,必须要管理,检查,控制额外的代码。数据库以及主机环境的变化可能导致hints过时或者可能有负面的影响。因此hints用在测试或开发环境中。
1 执行SQL语句前的准备工作
SQL语句进入oracle的库缓存后,在该语句准备执行之前,将执行下列步骤:
1) 语法检查:检查SQL语句拼写是否正确
2) 语义分析:核实所有的与数据字典不一致的表和列的名字
3) 轮廓存储检查:检查数据字典,以确定该SQL语句的轮廓是否已经存在
4) 生成执行计划:使用基于成本的优化规则和数据字典中的统计表来决定最佳执行计划
5) 建立二进制代码:基于执行计划,oracle生成二进制执行代码
一旦为执行准备好了SQL语句,以后的执行将很快发生,因为oracle认为同一个SQL语句,并且重用那些语句的执行。然而,对于生成特殊的SQL语句,或嵌入了文字变量的SQL语句的系统,SQL执行计划的生成时间就很重要。对于连接很多表查询,oracle需要花费大量的时间来检测连接这些表的适当顺序。
2 评估表的连接顺序
在SQL语句的准备过程中,花费最多的步骤是生成执行计划。当oracle评估表的连接顺序时,它必须考虑的表之间所有可能的连接。如,6个表之间连接有720种可能的连接线路。当一个查询中含有超过10个表的连接时,排列的问题将变得更为显著。
3 Optimizer_search_limit参数来设定限制
Optimizer_sea
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
