数据库查询优化
关系型数据库查询优化一般可分为代数优化(也称为逻辑优化)和物理优化(非代数优化)。代数优化是指关系代数表达式的优化,物理优化则是通过存取路径和底层操作算法的选择进行优化。
查询处理步骤
1 查询分析
首先对查询语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等,进行语法检查和语法分析。
2 查询检查
对合法的检查语句进行语义检查,即根据数据字典中有关的模式定义检查语句中的数据库对象,如关系名,属性名是否存在和有效。关系数据库一般使用查询树,也称为语法分析树。
3 查询优化
每个查询都会有许多可供选择的执行策略和操作算法,查询优化就是选择一个高效执行的查询处理策略。查询优化一般可分为代数优化和物理优化。代数优化是指关系代数表达式的优化,即按照一定的规则,通过对关系代数表达式进行等价交换,改变代数表达式中操作的次序和组合,使执行更高效;物理优化则是通过存取路径和底层操作算法的选择进行优化。
4 查询执行
依据优化器得到的执行策略生成查询执行计划,由代码生成器生成执行这个查询计划的代码。
查询算法操作
1 选择算法的实现
例如:select * from student from <条件表达式>
简单的全表扫描算法
对表进行顺序扫描,当选择率(即满足条件的元组数占全表的