大多数关系数据库通过四个步骤处理 JDBC/SQL 查询:
- 解析传入的 SQL 查询
- 编译 SQL 查询
- 规划/优化数据采集路径
- 执行优化查询/获取并返回数据
我想知道“解析传入查询”的真正含义是什么?“计划/优化数据采集路径”是什么意思?
大多数关系数据库通过四个步骤处理 JDBC/SQL 查询:
我想知道“解析传入查询”的真正含义是什么?“计划/优化数据采集路径”是什么意思?
解析意味着检查输入的字符并将其识别为命令或语句,方法是查看字符中的关键字和标识符,忽略注释,将引用的部分安排为字符串常量,并将整体结构与语言语法相匹配,从而理解这一切。
计划/优化意味着找出最好的方法(所有可能的方法)来确定结果,通常与执行时间有关。这也可能意味着最小化所需的锁数量。也许查询的某些部分可以忽略(where ... and 1 == 1
)或者根本不需要访问表等。
1)解析:根据SQL语法规则等对查询进行句法分析,并尝试将查询“标记化”为基本部分形式。
2) 计划/优化:在那个阶段,SQL 引擎会尝试评估执行查询的最佳方式。它试图利用现有的索引、集群和表关系;寻找绕过全表扫描的方法,通过避免重复数据读取来有效地利用缓存,等等。