我知道EF会在应用程序级别上进行执行计划的一些缓存,但是我很想知道SQL Server是否对每个请求生成了执行计划。
是否有任何偏好可以为任何查询制定SQL缓存执行计划,而不仅是商店过程。
sql Server在内存中生成的每个计划(不仅用于过程(。这些计划可能不久了。基本上,这取决于您的服务器的繁忙程度,您有多少RAM,如何按下SQL Server进行内存等。或者,您可以启用查询商店,但这是SQL Server 2016中介绍的一项新功能。是一些选项,但是即能够为您节省特定查询的计划和执行史等。您可以使用此查询来查看缓存中实际上是什么:
SELECT
c.usecounts
,c.size_in_bytes
,c.objtype
,query.text
,plans.query_plan
FROM sys.dm_exec_cached_plans AS c
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS query
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS plans
ORDER BY c.usecounts DESC