|
|
1
6
1)在示意图中,您将按以下步骤进行: a)将查询拆分为其组件,并创建查询的抽象语法树(ast)。有工具可以做到这一点,在过去,雷克斯和雅克曾用于这一点,现在有更多的选择。 b)在第一步中,优化器将通过应用已知的相等转换来重新组织树,这样查询将以最有效的方式通过使用索引、执行先返回很少结果的查询,从而减少连接等进行。 c)您可以遍历此树来实现对数据库的小操作和返回的数据。通常,这会导致AST节点中出现“虚拟临时”表。 d)从顶部节点收集资料并将其返回给客户机 2-3)我认为没有特殊语言。许多是C语言,但也有Java和其他语言。 4)我认为最好的工作环境是安静的工作环境。;-) 真正困难的工作不是在SQL解释器/编译器中,而是在详细的数据结构和保持一切有效组织和动态调整以保持数据库性能的基础上。 |
|
2
2
我相信Oracle DBMS最初都是用C编写的,可能现在仍然是。 |
|
|
3
2
|
|
|
4
1
在许多(所有?)数据库您可以查看解释/执行计划。这将为您提供数据库内部发生的事情的大致近似值。在商业RDBMSE中,这是对优化如何工作有任何了解的最接近的方法。查询分析器中的算法是严密保护的秘密。 张乔写了一封信 excellent article about how SQL Server's cost based optimizer works 同样,你也可以找到类似的信息 PostgreSQL 和 MySQL |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |