当我们查询SYS.DM_EXEC_CACHED_PLANS时,会出现一个名为parse tree的缓存对象类型,显示视图和表值函数。它是否类似于存储过程和即席查询的查询计划?
答案 0 :(得分:9)
没有
这是该过程早期阶段的输出。它将被替换为在编译阶段之前引用Views的查询。涉及的阶段是
有关这些的完整描述,请参阅Benjamin Nevarez的文章The SQL Server Query Optimizer
AFAIK尽管在Parse Tree
中显示为sys.dm_exec_cached_plans
,但实际上是第二阶段的输出存储并替换为查询。此查询支持此功能,其中这些对象显示为Bound Trees
SELECT text,
objtype,
refcounts,
usecounts,
size_in_bytes,
cacheobjtype,
name
FROM sys.dm_exec_cached_plans p
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
JOIN sys.dm_os_memory_cache_entries e
ON p.memory_object_address = e.memory_object_address
WHERE cacheobjtype = 'Parse Tree'