数据库系统查询优化的总目标是:选择有效的策略,求得给定关系表达式的值,实际系统对查询优化的具体实现不尽相同,但一般来说,可以归纳为四个步骤:
1.将查询转化为某种内部表示,通常是语法树.
2.根据一定的等价变换规则把语法树转换成标准形式.
3.选择低层的操作算法.对于语法树中的每一个操作需要根据存取路径,数据的存储分布,存储数据的聚簇信息来选择具体的执行算法.
4.生成查询计划.查询计划也称为查询执行方案,是由一系列的内部操作组成的.
3和4其实没有清晰的界限.目前的商品化数据库系统大都采用基于代价的优化算法,这种方法要求优化器充分考虑系统中的各种参数(如缓冲区大小,表的大小,数据的分布,存取路径),通过某种代价模型计算出各种查询执行方案的执行代价,然后选取代价最小的执行方案.在集中式数据库中,查询的执行主要开销包括:
总代价=I/O代价+CPU代价