【问题标题】:SQL Server Execution Plans and Expanded ViewsSQL Server 执行计划和扩展视图
【发布时间】:2019-04-13 10:24:10
【问题描述】:

我正在尝试使用执行计划 XML 来分​​析动态 SQL 语句,特别是确定它是否引用了非索引视图。希望通过 XPath 在单独的 C# 项目中系统地导航 XML。

但是,默认情况下,SQL 语句似乎会在生成 QEP 之前扩展到组成表,因此它不包含对视图的引用。 (我想避免依赖基于字符串的语句文本搜索)

是否有一个选项可以让我扩展 XML 计划以包含视图扩展,或者是否有我可能想要考虑的替代方法?

谢谢。

【问题讨论】:

    标签: tsql sql-execution-plan


    【解决方案1】:

    查询执行计划在构建时会经历三个阶段——解析、绑定和优化。在绑定阶段,非索引视图被其定义替换,而在优化阶段,视图中未使用的列被删除。所以在最终的执行计划中,视图本身什么都没有。当在查询中指定NOEXPAND 提示时,情况并非如此,这是您可以在执行计划中找到视图的唯一情况。但这需要更改查询,在您的情况下这可能不是一个选项。

    如果您想在查询中搜索视图使用情况,可能您应该尝试获取从 sys.dm_exec_sql_text 返回的查询文本并在那里搜索(但这并不简单,因为 VIEW$SOMETHING 将在查询中找到引用 VIEW$SOMETHING_ELSE)。

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2021-12-09
      相关资源
      最近更新 更多