📜  SQL |查询处理

📅  最后修改于: 2021-09-10 02:09:57             🧑  作者: Mango

查询处理包括将高级查询转换为可用于文件系统物理级别的低级表达式、查询优化和查询的实际执行以获得实际结果。

查询处理框图如下:

详细图绘制如下:

它是通过以下步骤完成的:

  • 步骤1:
    解析器:在解析调用期间,数据库在将查询转换为关系代数后执行以下检查 – 语法检查、语义检查和共享池检查。

    解析器执行以下检查(请参阅详细图表):

    1. 语法检查 –总结 SQL 语法有效性。例子:
      SELECT * FORM employee 

      这里检查给出了 FROM 拼写错误的错误。

    2. 语义检查——确定语句是否有意义。示例:查询包含不存在的表名被此检查检查。
    3. 共享池检查——每个查询在执行过程中都有一个哈希码。因此,此检查确定共享池中是否存在写入的哈希代码,如果共享池中存在代码,则数据库将不会采取额外的步骤进行优化和执行。

    硬解析和软解析——
    如果有一个新的查询并且它的哈希码在共享池中不存在,那么该查询必须通过称为硬解析的附加步骤,否则如果哈希码存在,则查询不会通过附加步骤。它只是直接传递给执行引擎(请参阅详细图)。这称为软解析。
    硬解析包括以下步骤 – 优化器和行源生成。

  • 第2步:
    优化器:在优化阶段,数据库必须至少对一个唯一的 DML 语句进行硬解析,并在此解析过程中进行优化。该数据库从不优化 DDL,除非它包含一个 DML 组件,例如需要优化的子查询。

    它是一个过程,其中检查满足查询的多个查询执行计划,并满足执行最有效的查询计划。
    数据库目录存储执行计划,然后优化器传递执行成本最低的计划。

    行源生成 –
    行源生成是一种软件,它从优化器接收最佳执行计划并生成可供数据库其余部分使用的迭代执行计划。迭代计划是由sql引擎执行时产生结果集的二进制程序。

  • 第 3 步:
    执行引擎:最后运行查询并显示所需的结果。