官术网_书友最值得收藏!

Query compilation essentials

The Query Processor is the component inside the SQL Server Database Engine that is responsible for compiling a query. In this section, we will focus on the highlighted sections of the following diagram, which handle query compilation:

The first stage of query processing is generally known as query compilation and includes a series of tasks that will eventually lead to the creation of a query plan. When an incoming T-SQL statement is parsed to perform syntax validations and ensure that it is correct T-SQL, a query hash value representing that statement as it was written is generated. If that query hash is already mapped to a cached query plan, it can just attempt to reuse that plan. However, if a query plan for the incoming query is not already found in the cache, query compilation proceeds with the following tasks:

  1. Perform binding, which is the process of verifying that the referenced tables and columns exist in the database schema.
  2. References to a view are replaced with the definition of that view. (This is called expanding the view.)
  3. Load metadata for the referenced tables and columns:
    1. The definition of tables, indexes, views, constraints, and so on that apply to the query
    2. Data distribution statistics on the applicable schema objects
  4. Verify whether data conversions are required for the query:
When the query-compilation process is complete, a structure that can be used by the Query Optimizer is produced, known as the algebrizer tree or query tree.

If the T-SQL statement is a Data Definition Language (DDL) statement, there's no possible optimization, and so a plan is produced and executed immediately. However, if the T-SQL statement is a Data Manipulation Language (DML) statement, SQL Server will move to an exploratory process known as query optimization.

主站蜘蛛池模板: 新和县| 海原县| 新绛县| 正定县| 安岳县| 镇巴县| 昂仁县| 石嘴山市| 汶川县| 珲春市| 上林县| 阜平县| 定南县| 织金县| 木兰县| 大田县| 伊吾县| 桃园县| 伊宁县| 龙川县| 定南县| 福建省| 海伦市| 繁昌县| 元氏县| 孙吴县| 阿荣旗| 天等县| 仁布县| 邹城市| 威远县| 濉溪县| 万安县| 阳东县| 沅陵县| 文成县| 金乡县| 朝阳县| 丰县| 海兴县| 安塞县|