【问题标题】:Profiling statements inside a User-Defined Function用户定义函数中的分析语句
【发布时间】:2011-01-26 23:51:42
【问题描述】:

我正在尝试使用 SQL Server Profiler (2005) 来跟踪一些应用程序性能问题。其中一个调用是对表值用户定义函数的调用。此函数包装了一个将多个表连接在一起的选择。

在 SQL Server Profiler 中,记录对 UDF 的调用。但是,根本没有记录作为 UDF 基础的选择。正因为如此,我没有得到关于哪些表和索引被击中的有用数据。我想将此信息提供给 Database Tuning Advisor 以获得一些索引建议。

有什么方法(除了解开查询本身)在 Profiler 中记录 UDF 调用的表吗?

【问题讨论】:

    标签: sql-server sql-server-2005 tsql profiling user-defined-functions


    【解决方案1】:

    你不能:多语句 TVF 是一个黑匣子,你只能获取 CPU、读取、写入等。

    我所说的“黑匣子”是指它是另一个查询中完全封装且不透明的一系列语句,并且没有像您通过存储过程逐行获取的“流”。

    内嵌 TVF 像视图或宏一样展开到主查询中并且可以看到。

    编辑:相关:Table Valued Function where did my query plan go?

    【讨论】:

    • @Craig Walker:他们很难解决。谨慎使用它们。例如,即使不是所有行都需要,也必须从 TVF 返回所有行,或者在其他情况下,过滤器等将应用于查询中的更优点
    • 嗯...将 TVF 转换为内联 TVF 可能是可行的。
    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 2020-10-13
    • 2016-03-15
    • 2011-05-08
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多