查询处理步骤

image-20211219214001503

查询优化-代数优化

  • (1) 选择运算应尽可能先做。 在优化策略中这是最重要、 最基本的一条。 它常常可使执行代价节约几个数量级, 因为选择运算一般使计算的中间结果大大变小。
  • (2) 把投影运算和选择运算同时进行。 如有若干投影和选择运算, 并且它们都对同一个关系操作, 则可以在扫描此关系的同时完成所有这些运算以避免重复扫描关系。
  • (3) 把投影同其前或后的双目运算结合起来, 没有必要为了去掉某些字段而扫描一遍关系。
  • (4) 把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算, 连接( 特别是等值连接) 运算要比同样关系上的笛卡儿积省很多时间。
  • (5) 找出公共子表达式。 如果这种重复出现的子表达式的结果不是很大的关系, 并且从外存中读入这个关系比计算该子表达式的时间少得多, 则先计算一次公共子表达式并把结果写入中间文件是合算的。 当查询的是视图时, 定义视图的表达式就是公共子表达式的情况。