1.概述
基本步骤:
1)语法分析与翻译:查询处理中系统首先必须把查询语句翻译成系统的内部表示形式,翻译过程类似于编译器语法分析器的工作。对用户的查询进行语法检查,比如关系名是否已经存在等
2)优化
3)执行
本章针对关系模型进行论述。我们将看到关系模型的代数基础给查询优化带来了诸多便利,给定一个查询,通常有很多方法计算其结果:
要全面的说明如何计算一个查询,不仅要提供关系代数表达式,还要对该表达式加上注释用于说明如何实施每个操作的命令。
执行原语:加了有关“如何执行”的注释的关系代数运算
流水线:几个原语聚集而成
查询执行计划:用于计算一个查询的原语序列
查询优化是为查询选择最有效的查询执行计划的过程。(关系代数级进行优化+查询语句处理的详细策略的选择)
part2: 查询代价的度量
1.磁盘存取代价被认为是查询执行计划代价的一个合理度量
2.简单地用磁盘块传送数作为实际代价的一个度量
part3: 选择运算
查询处理中,文件扫描是存取数据最低级的操作。文件扫描是用于定位,检索满足选择条件的记录的搜索算法。
基本算法
假定关系保存在单个文件中,先考虑对该关系的选择运算:
1.A1 (线性搜索):所有块都要读取,看他们是否满足选择条件,所以E(A1)=b(r),假定当找到制定的记录时需要扫描一般的数据块,此时扫描就可以终止,那么算法的代价估计值为E(A1)=(b(r)/2)
2.A2 (二分法搜索):
举个🌰:
利用索引的选择
索引结构称为存取路径,因为索引结果提供了定位和存取数据的一条路径。
使用索引的搜索算法称为索引扫描