2009年9月信息技术中心应用集成研究所-支持一室SQL性能优化及案例分析2011-04-22第2页目录优化器1确定优化目标2数据库开发调优三板斧34查看执行计划SQL优化5案例讨论6第3页优化器优化器Oracle有以下两种优化器:规则优化器RBO(RuleBasedOptimizer)成本优化CBO(CostBasedOptimizer)优化器的设置:•Instance级别-Optimizer_mode=first_rows•Session级别-Altersessionsetoptimizer_mode=first_rows;•SQL语句级别-Hint-/*+first_rows*/第4页RBORBORBO内置优先顺序1
使用ROWID读取一行数据2
依据聚簇连接读取一行数据3
依据UniqueHASHCluster读取一行数据4
依据UniqueIndex读取一行数据5
CLUSTER连接6
UniqueHASHClusterKey7
UniqueClusterKey8
单一列索引10
依据索引的范围查询11
依据索引的整体范围查询12
SortMerge连接13
索引列的MIN、MAX计算14
索引列的Orderby15
全表扫描SQL的执行顺序是由上到下,表的读取和过滤条件下是从右向左
第5页CBOCBO成本优化器由查询转换器(QueryTransformer)、成本估算器(Estimator)、执行计划生成(PlanGenerator)构成
查询转换器:把当前的SQL语句向比较合适的形式转换,以便获得较好的执行计划
视图合并、谓词推进、子查询非嵌套化等
成本估算器:由选择度(selectivity)、基数(Cardinality)、成本(Cost)三部分内容简介
选择度是指满足条件的行在查询的结果集中所占的比率
基数判定对象查询结果行数据或者向下一