SQL Server何时选择自动重新编译存储过程执行计划?
我正在阅读以下文章: 在这两个示例中,如果我使用相同的参数值执行存储过程超过3次,SQL Server(2017)似乎会自动切换到更正确的执行计划 例如:SQL Server何时选择自动重新编译存储过程执行计划?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在阅读以下文章: 在这两个示例中,如果我使用相同的参数值执行存储过程超过3次,SQL Server(2017)似乎会自动切换到更正确的执行计划 例如: CREATE PROECEDURE Sales @OrderDate datetime AS SELECT sod.SalesOrderID,sod.OrderQty,sod.UnitPrice,soh.OrderDate FROM sales.salesorderdeta
CREATE PROECEDURE Sales
@OrderDate datetime
AS
SELECT
sod.SalesOrderID,sod.OrderQty,sod.UnitPrice,soh.OrderDate
FROM
sales.salesorderdetail sod
INNER JOIN
sales.salesorderheader soh
ON
sod.SalesOrderID = soh.SalesOrderID
WHERE
soh.OrderDate < @OrderDate
ORDER BY
sod.UnitPrice
GO
EXEC Sales '20110730'
EXEC Sales '20140730'
创建项目销售
@订单日期时间
作为
挑选
sod.SalesOrderID、sod.OrderQty、sod.UnitPrice、soh.OrderDate
从…起
sales.salesorderdetail
内连接
sales.salesorderheader soh
在…上
sod.SalesOrderID=soh.SalesOrderID
哪里
soh.OrderDate<@OrderDate
订购人
单价
去
执行销售“20110730”
执行销售“20140730”
如果我运行两次top exec,那么SQL选择执行计划A。
如果我运行第二个exec,它会多次使用执行计划。但在执行3次后,更改为执行计划B。
如果我返回并运行第一个查询几次,它最终会切换回a。
两个问题。请回答两个问题: