SQlite源码分析

查询重写

查询重写模块,或重写器,负责简化和标准化查询,而无需改变查询语义.它只能依靠查询目录中的元数据,而不能访问表中的数据.尽管我们说是重写查询,但大多数重写实际操作的是查询的内部表示,而不是原始SQL语句文本.查询重写模块通常输出一个查询的内部表示,这种输出形式和它接受作为输入的内部格式相同.

许多商业系统的重写器是一个逻辑组件,它的实际执行要么发生在查询解析的后期阶段,要么发生在查询优化的前期阶段.例如,在DB2中,重写器是一个单独的组件,然而在SQL服务器中,查询重写是作为一个查询优化的前期阶段完成的.尽管如此,单独考虑重写器是很有用的,即使在所有的系统中并不存在显式的架构界线.