关系系统的查询优化是一项非常主要的工作,一千优化的查询执行起来不仅可以节省时间,也可以节省空间,进而提高工作效率。针对关系系统的查询优化,试回答以下问题:
(1)查询优化的总体目标。
(2)查询优化的一般策略。
(3)查询优化的一般步骤。
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答 案:(1)查询优化的总体目标是:选择有效的策略求得给定的关系表达式的值。(2)查询优化的一般策略:①选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条。②在执行联接前对文件适当地预处理。预处理方法主要有两种对文件排序和在联接属性上建立索引。③把投影运算和选择运算同时进行。如有若干投影和选择运算并且它们都对同一个关系操作则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。④把投影同其前或后的双目运算结合起来没有必要为了去掉某些字段而扫描一遍关系。⑤把某些选择同在它前面要执行的笛卡尔积结合起来成为一个联接运算。⑥找出公共子表达式。如果这种重复出现的子表达式的结果不是很大的关系并且从外存中读人这个关系比计算该子表达式的时间少得多则先计算一次公共子表达式并把结果写入中间文件是合算的。当查询的是视图时定义视图的表达式就是公共子表达式的情况。(3)查询优化的一般步骤:①把查询转换成某种内部表示。通常用的内部表示是语法树。②把语法树转换成标准(优化)形式。利用优化算法把原始的语法树转换成优化的形式。③选择低层的存取路径。根据优化了的语法树计算关系表达式值的时候要充分考虑索引、数据的存储分布等存取路径利用它们进一步改善查询效率。这就要求优化器去查找数据字典获得当前数据库状态的信息。例如选择字段上是否有索引联接的两个表是否有序联接字段上是否有索引等等然后根据一定的优化规则选择存取路径。④生成查询计划选择代价最小的。查询计划是由一组内部过程组成的这组内部过程实现按某条存取路径计算关系表达式的值通常有多个查询计划可供选择。对不同的查询计划计算代价选择代价最小的一个。
(1)查询优化的总体目标是:选择有效的策略,求得给定的关系表达式的值。(2)查询优化的一般策略:①选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条。②在执行联接前对文件适当地预处理。预处理方法主要有两种,对文件排序和在联接属性上建立索引。③把投影运算和选择运算同时进行。如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。④把投影同其前或后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系。⑤把某些选择同在它前面要执行的笛卡尔积结合起来成为一个联接运算。⑥找出公共子表达式。如果这种重复出现的子表达式的结果不是很大的关系,并且从外存中读人这个关系比计算该子表达式的时间少得多,则先计算一次公共子表达式并把结果写入中间文件是合算的。当查询的是视图时,定义视图的表达式就是公共子表达式的情况。(3)查询优化的一般步骤:①把查询转换成某种内部表示。通常用的内部表示是语法树。②把语法树转换成标准(优化)形式。利用优化算法,把原始的语法树转换成优化的形式。③选择低层的存取路径。根据优化了的语法树计算关系表达式值的时候要充分考虑索引、数据的存储分布等存取路径,利用它们进一步改善查询效率。这就要求优化器去查找数据字典,获得当前数据库状态的信息。例如选择字段上是否有索引,联接的两个表是否有序,联接字段上是否有索引等等,然后根据一定的优化规则选择存取路径。④生成查询计划,选择代价最小的。查询计划是由一组内部过程组成的,这组内部过程实现按某条存取路径计算关系表达式的值,通常有多个查询计划可供选择。对不同的查询计划计算代价,选择代价最小的一个。