今天来聊聊喜闻乐见的 SQL。
数据库执行 SQL 语句有几个步骤,包括:
- 解析 SQL 语句并检查其有效性。
- 将 SQL 转换为内部表示结构,如关系代数。并创建查询树或查询图,表示操作的逻辑顺序。
- 优化内部表示结构,并创建一个执行计划。优化器会根据索引、统计数据、可用资源和查询复杂度等因素分析各种潜在的执行计划。其目标是确定执行查询的最有效方式。
- 执行该计划并返回结果。这一阶段包括访问表中的必要数据、执行任何过滤或条件语句、执行 SQL 语句中指定的 join、聚合和排序操作。
下图以可视化的方式展示了这种执行过程。
图片
SQL 的执行非常复杂,需要考虑很多因素,例如:
- 索引和缓存的使用
- 表连接 (Join) 的顺序
- 并发控制
- 事务管理
我们下面来看看 SQL join 如何工作?下图详细说明了 4 种 SQL join 的工作方式。
图片
- 内部连接 - 返回两个表中匹配的记录。
- 左连接 - 返回左表中的所有记录和右表中的匹配记录。
- 右连接 - 返回右表中的所有记录和左表中的匹配记录。
- 全外连接 - 返回左表或右表中匹配的所有记录。