数据库查询优化全解析
1. 查询优化概述
查询优化是从众多可用策略中挑选出最有效查询评估计划的过程,特别是在处理复杂查询时,该过程尤为重要。通常不会期望用户编写的查询能高效处理,而是由系统创建一个能最小化查询评估成本的计划,这就是查询优化发挥作用的地方。
例如,对于查询“找出在位于Arganzuela的任何分行拥有账户的所有客户的姓名”,其关系代数表达式最初为:
∏nombre - cliente (σ ciudad - sucursal = «Arganzuela» (sucursal ⋈ (cuenta ⋈ impositor)))
这个表达式会创建一个很大的中间关系。但实际上,我们只关心该关系中对应位于Arganzuela的分行的少数元组,且只关注六个属性中的一个。因此,可将查询表示为等价但能生成更小中间关系的表达式:
∏nombre - cliente ((σ ciudad - sucursal = «Arganzuela» (sucursal)) ⋈ (cuenta ⋈ impositor))
2. 统计信息估计
数据库系统的目录会存储关于数据库关系的统计信息,这些信息对于估计查询计划中各操作结果的统计数据非常关键。
- 目录信息 :
- (n_r):关系(r)的元组数。
- (b_r):包含关系(r)元组的块数。
- (t_r):关系(r)每个元组的字节大小。
- (f_r):关系(r)的块因子,即一个块中能容纳的关系(r)的元组数。
- (V (A, r)):关系(r)中属性(A)出现的不同值的数量。如果(
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



