查询处理的步骤 语法分析与翻译( Parsing and translation 2优化( Optimization) 3.执行( Evaluation) query parser and relational-algebra translator expression optimizer>← query evaluation engine output execution plan data statistics about data
查询处理的步骤 1. 语法分析与翻译 (Parsing and translation ) 2. 优化 (Optimization ) 3. 执行 (Evaluation )
查询处理的步骤 语法分析与翻译 扫描、识别SQL语句,进行词法、语法解析,判断是否符合SQL 语法规则 检查语句中的关系名是否存在和有效,检查用户与权限和完整性 约束 把SQL语句转换成等价的内部表示形式(语法分析树,或进一步 翻译成关系代数表达式,代表一种执行计划) ■优化 选择一个高效执行的查询执行计划 ●选择的依据:基于代价 执行 按照选定的查询执行计划执行,并输出结果
查询处理的步骤 语法分析与翻译 扫描 、识别SQL语句,进行词法 、语法解析,判断是否符合SQL 语法规则 检查语句中的关系名是否存在和有效,检查用户与权限和完整性 约束 把SQL语句转换成等价的内部表示形式 (语法分析树,或进一步 翻译成关系代数表达式,代表一种执行计划 ) 优化 选择一个高效执行的查询执行计划 选择的依据:基于代价 执行 按照选定的查询执行计划执行,并输出结果
查询优化 ■在SQL中,一个查询可有多种表示方式,不要期待用户 写出具有最高效率执行计划的查询语句 个关系代数表达式可能有多个等价的表达式 如oay70 ar(instructor))-等价于 Isalarvosalarv 75000(instructor)) ■每个关系代数运算通常有多重计算方式,即执行计划 ●如,可以利用 salary上的索引查找 salary<75000的 instructors 或者,扫描全表并去掉 salary≥75000的 Instructors ■不同的执行计划有不同的代价
查询优化 在SQL中,一个查询可有多种表示方式,不要期待用户 写出具有最高效率执行计划的查询语句 一个关系代数表达式可能有多个等价的表达式 如 σsalary<75000(∏salary(instructor))等价于 ∏salary(σsalary<75000(instructor)) 每个关系代数运算通常有多重计算方式,即执行计划 如, 可以利用salary上的索引查找salary < 75000的instructors 或者,扫描全表并去掉salary ≥ 75000的instructors 不同的执行计划有不同的代价
name, title ∏ title dept_name= music instructor deptname= Music teaches course instructor teaches COurse 同一查询的不同执行计划
同一查询的不同执行计划
name, title (sort to remove duplicates) Chash join) <(merge join) course pipeline pipeline dept_name= music year=2009 use index (use linear scan) instructor eaches 一个更详细的执行计划
一个更详细的执行计划