首页 理论教育数据库优化器:基于规则的性能提升

数据库优化器:基于规则的性能提升

【摘要】:基于规则是指根据条件语句的syntax预先确定条件范围并以此为基础制定执行计划。以下为RBO预先对性能定义规则的项目。使用 unique-key、primary-key的HASH cluster key的单个行访问。2) RBO中的 SQL调优创建连接语句的执行计划时,RBO对所有可能的连接顺序以指定的access path优先顺序为标准,尽量少执行FULL-TABLE SCAN,同样尽量少执行SORT-MERGE操作。此时,从底部选择用于五个条件子句的索引作为AND-EQUAL处理对象。若两个执行计划的优先顺序完全相同,RBO只能选择在行缓存内先发现的执行计划。

基于规则是指根据条件语句的syntax预先确定条件范围(selectivity)并以此为基础制定执行计划。以下为RBO预先对性能定义规则的项目。由于条件是号码越小性能越好,会赋予高优先顺位。

1) RBO的 RULE

(1) ROWID的单个行访问。

(2) CLUSTER JOIN的单个行访问。

(3)使用 unique-key、primary-key的HASH cluster key的单个行访问。

(4)由unique-key、primary-key创建的unique INDEX的单个行访问。

(5) CLUSTER连接 。

(6) non unique HASH cluster key。

(7) non unique cluster key(索引化的Cluster-Key)。

(8) NON UNIQUE 组合索引。(www.chuimin.cn)

(9)单一列索引的等效搜索。

(10)在有限范围内搜索已构建索引的列(BETWEEN、LIKE、<、AND、> 、= 表达式)。

(11)无限制搜索已构建索引的列(≥ 、≤表达式)。

(12)排序—合并连接。

(13)已构建索引的列的MAX、MIN。

(14)已构建索引的列的 ORDER BY。

(15)全表扫描。

2) RBO中的 SQL调优

创建连接语句的执行计划时,RBO对所有可能的连接顺序以指定的access path优先顺序为标准,尽量少执行FULL-TABLE SCAN,同样尽量少执行SORT-MERGE操作。反之,优先查找返还单个行条件较多的连接顺序。条件相同时,将从FROM子句的右侧表向左选择 driving(外部)表。WHERE子句按从下往上的顺序处理,事实上只在 ANDEQUAL处理五个以上的索引时才使用该规则。此时,从底部选择用于五个条件子句的索引作为AND-EQUAL处理对象。若两个执行计划的优先顺序完全相同,RBO只能选择在行缓存内先发现的执行计划。即意味着用于查询的执行计划可能会受到索引或其他对象创建顺序的影响(选择最近创建的索引)。所以在RBO下调优SQL的方式主要有变更SQL语句的方式和调整索引构成的方式。