《基于ORACLE的SQL优化读书》笔记 星形转换/谓词推入/连接因式分解/表移除

星形转换:

事实表和维度表由外键相连,事实表的外键列上有位图索引。

星形转换核心:将针对各个维度表的限制条件通过等价改写的方式以额外的子查询施加到事实表上。然后通过索引间的位图操作。

允许星形转换:

Alter session set star_transformation_enabled =true;

 

谓词推入:

还是会把视图中定义的SQL当成一个独立的处理单元来处理,但CBO会把外部的谓词条件推入,以便能利用索引做嵌套循环。如外部结果集比较大,则效率不会高。

ORACLE 仅仅支持以下类型的视图做连接谓词推入:

视图定义SQL中有UNION ALL/ UNION /distinct /group by

和外部查询之间的连接方法是外连接,反连接,半连接的视图。

关键字:PUSHED PREDICATE

Hint: no_push_pred(table)  push_pred(table)

连接因式分解:

11gR2之后引入,对UNION ALL的各个分支,不再只是重复执行,会提出公共部分,做为单独结果集。1,减少对表的访问。(VIEWNAME VW_JF。。。。) 2.被抽出来的部分,可以自由跟外边的表PAIR,也就是有更多组合可以选择。

 

表扩展:针对分区表~(还没看)

表移除:把对结果没有影响的表从SQL中移除。通常表与表之间能过外键关联或是表与表之间通过外连接相连。用途在于,DEV针对视图的查询,只用到了视图中的几个列。。。ORACLE可作优化 ,10gR2中已经引入

你可能感兴趣的:(读书笔记)