SQlite源码分析

查询优化器

查询优化器的工作就是将一个内部的查询表示转化为一个高效的查询执行计划.一个查询计划可以被认为是一个数据流图,在这个数据流图中,表数据会像在管道中传输一样,从一个查询操作符(operator)传递到另一个查询操作符.在许多系统里,查询首先被分解为SELECT-FROM-WHERE查询块.每个单独的查询块的优化都是使用一些技术来完成的,这些技术与Selinger等人在System R 优化器的论文中描述的技术类似.在完成的时候,一些简单的操作符通常被添加到每个查询块的顶部,作为后处理来计算GROUP BY,ORDER BY,HAVING和DISTINCT子句.然后,不同的块就用一种简单的方式拼合在一起.