逻辑查询优化

1、逻辑查询优化

     基于关系代数理论,启发式规则,对查询进行等价重写。

2、查询重写规则

(1)子查询优化


(2)视图重写


(3)等价谓词重写


(4)条件化简


(5)外连接消除


(6)嵌套连接消除


(7)连接消除


(8)语义优化


(9)针对非SPJ的优化


3、查询的基本操作

(1)选择

即限制条件,优化方式是选择操作下推,目的是尽量减少操作前的元组数,使得中间临时关系尽量少,减少IO、CPU的消耗,节约内存空间。

比如a = b, b =1 ,下推到 a=1 and b=1,分别下推到A,B表


(2)投影操作

对应的select目的列对象,优化方式是投影操作下推。

目的是尽量减少连接操作前的列数,使得中间临时关系尽量少,节约内存空间


(3)连接操作

至少两个表存在。

A、多表连接中每个表被连接的顺序决定着效率

比如ABC,ACB,BCA等

B、多表连接中每个表被连接的顺序被用户语义决定

笛卡尔积、内连接、左外连接、右外连接、全外连接


4、查询的类型

(1)针对SPJ的查询优化

基于选择(Select)、投影(Projection)、连接(Join)三种基本组合操作结合的查询所做的优化

选择、投影可以在关系代数规则的指导下进行优化

表连接,需要多表连接的相关算法完成优化。


(2)针对非SPJ的查询优化

在SPJ的基础上存在GROUP BY操作的查询,这是一种较为复杂的查询,对带有GROUP BY、ORDER BY等操作的优化

基于索引及代价估算完成。


5、物理查询优化

代价模型+索引利用+单表扫描算法+两表连接算法+多表连接算法 = 物理查询优化

你可能感兴趣的:(逻辑查询优化)