StatementParameterizationType 计划属性是什么?

Pau*_*ite 8 sql-server ssms execution-plan

我注意到执行计划有时包含一个StatementParameterizationType属性。

属性窗口

这是什么,什么意思,什么时候出现?

Pau*_*ite 12

StatementParameterizationType属性指示应用于语句的参数化类型。

这些值记录在sys.query_store_query

  • 0 = 无
  • 1 = 用户
  • 2 = 简单
  • 3 = 强制

它仅出现在执行后(“实际”)计划的根节点上。

查询商店还必须启用看到这个属性(例如,在SSMS)。


AdventureWorks演示:

USE AdventureWorks2017;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
ALTER DATABASE CURRENT SET PARAMETERIZATION SIMPLE;
GO
-- None (0)
SELECT COUNT_BIG(*)
FROM Production.Product AS P 
WHERE P.Color = N'Red';
GO
-- User (1)
EXECUTE sys.sp_executesql
    @stmt = N'
        SELECT COUNT_BIG(*)
        FROM Production.Product AS P 
        WHERE P.Color = @Color;',
    @params = N'@Color nvarchar(15)',
    @Color = N'Red';
GO
-- Simple (2)
SELECT A.AddressID
FROM Person.[Address] AS A
WHERE A.AddressLine1 = N'1 Smiling Tree Court';
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
ALTER DATABASE CURRENT SET PARAMETERIZATION FORCED;
GO
-- Forced (3)
SELECT COUNT_BIG(*)
FROM Production.Product AS P 
WHERE P.Color = N'Red';
Run Code Online (Sandbox Code Playgroud)