查询管理器 查询管理是一个数据库强大与否的一个判断指标。通过查询管理,可以把一个糟糕的查询语句转换为一段快速执行的代码,代码执行后返回结果给客户端管理器。整个过程分为多步: 查询首先被解析并检查其有效性; 重写查询并删除不必要的操作,另外做一
查询管理器
查询管理是一个数据库强大与否的一个判断指标。通过查询管理,可以把一个糟糕的查询语句转换为一段快速执行的代码,代码执行后返回结果给客户端管理器。整个过程分为多步:
- 查询首先被解析并检查其有效性;
- 重写查询并删除不必要的操作,另外做一些预优化;
- 为了提升性能进行必要的优化,最终转换为一个执行计划;
- 编译执行计划;
- 最后运行执行计划。
在读了这一章节之后,如果对查询优化想更深入的理解,我推荐阅读以下资料:
- 1979年发表的一篇最早的关于基于成本优化的论文: Access Path Selection in a Relational Database Management System。这篇论文只有12页,只要具备计算机科学中级水平就可以理解。
- 关于DB 9.X如何优化查询的深度介绍:DB2 for Linux, UNIX, and Windows Optimizer。
- 一篇关于PostgreSQL如何优化查询的详细介绍:Explaining the Postgres Query Optimizer。这篇非常易于理解,因为它并不是从PostgreSQL的算法角度介绍,而是展示了PostgreSQL的查询计划。
- SQLite官方优化文档:The SQLite Query Planner。它很容易读懂,以你为SQLite优化规则很简单;但是它仅仅解释了优化器如何工作。
- SQL Server 2005优化查询的介绍:Understanding Query Processing and Query Plans in SQL Server
- Orcale 12c优化白皮书:Optimizer with Oracle Database 12c
- 《DATABASE SYSTEM CONCEPTS》的作者两篇关于查询优化的理论课程,它们主要聚焦于磁盘IO:Chapter 12: Query Processing、Chapter 13: Query Optimization
- 还有一篇我找到的更容易理解的只介绍join操作和磁盘IO的理论课程:Datenbanksysteme II: Implementation of Database Systems