为什么80%的码农都做不了架构师?>>>
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、物理查询优化
代价模型+索引利用+单表扫描算法+两表连接算法+多表连接算法 = 物理查询优化