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

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.

主站蜘蛛池模板: 衢州市| 轮台县| 东兰县| 信丰县| 宜城市| 皋兰县| 白河县| 德保县| 吉隆县| 湟中县| 临洮县| 呈贡县| 石台县| 子洲县| 长顺县| 青海省| 绿春县| 古丈县| 宁陕县| 关岭| 十堰市| 福泉市| 来宾市| 修水县| 山西省| 太原市| 姜堰市| 永胜县| 齐齐哈尔市| 新郑市| 建平县| 嘉祥县| 青冈县| 秀山| 麻江县| 波密县| 宣城市| 太仆寺旗| 灵寿县| 精河县| 洛南县|