ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE旨在帮助解决该问题。
这与SQL Server中的DBCC FREEPROCCACHE最接近,但它是针对数据库而不是服务器实例进行范围限定。这并不能阻止查询计划的缓存 - 它只是使当前缓存条目无效。
请注意,在SQL Azure中有一个可用于帮助您的查询存储过程(默认开启)。它存储了计划选择和计划性能(每个计划)。因此,如果您的应用程序历史记录中有一个执行更好的先前计划,则可以使用SSMS强制使用它,如果您希望查询优化器每次编译查询时都选择此计划。您看到的常见原因之一是计划选择中的参数敏感性,其中优化器将使用传递的参数值尝试生成查询计划,假设它表示运行该查询时的常见模式。如果该值实际上与表中的常见值不接近(就其在表中出现的频率而言),则有时可能会编译和缓存平均而言对您的应用程序不利的计划。
请注意,SQL Azure还具有自动机制,以尝试强制先前的计划,如果它注意到性能回归。然而,它有些保守,因此它可能不会为每个单独的回归启动,直到它随时间看到一个明显的模式。因此,虽然您可以在SSMS中强制执行某些内容,但也可以等待(假设这是您所看到的问题)。
OPTION(RECOMPILE)
运行查询吗?这样每次执行查询时都会有一个新的执行计划,确保了查询的准确性。 - Mike de Klerk