关系系统及其查询优化
查询处理步骤
graph LR Anylisis[查询分析] Check[查询检查] Opz[查询优化] Exec[查询执行] Anylisis --> Check --> Opz --> Exec;
1 |
|
查询分析
首先对查询语句进行扫描,词法分析和语法分析。从查询语句中识别出语言符号,如:SQL 关键字,属性名和关系名等,进行语法检查和语法分析,即判断查询语句是否符合 SQL 语法规则。如果没有就转入下一步处理,否则带上 Syntax Error
🎭(痛苦面具)
查询优化的一般准则
- 1.选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条。它常常可使执行时节约几个数量级,因为选择运算一般使计算的中间结果大大变小
- 2.在执行连接前对关系适当地预处理。预处理方法主要有两种,在连接属性上建立索引和对关系排序 。
- 3.把投影运算和选择运算同时进行。如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
- 4.把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
- 5.杷某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡尔积省很多时间
- 6.找出公共子表达式。
[!NOTE] 小总结
说白了其实就是较少参与运算的数据量,那么在我们的关系运算中会导致数据量发生很大变化,及其变化量都会影响到。
评论