SQL Server每次使用实体框架查询数据时都会生成执行计划



我知道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

最新更新