我正在尝试使用 SQL Server Profiler (2005) 来追踪一些应用程序性能问题。正在进行的调用之一是对表值用户定义函数的调用。此函数包装了一个将多个表连接在一起的选择。
在 SQL Server Profiler 中,记录了对 UDF 的调用。然而,作为 UDF 基础的选择根本没有被记录。因此,我没有获得有关哪些表和索引被命中的有用数据。我想将此信息提供给数据库优化顾问以获得一些索引建议。
有什么方法(除了自己展开查询之外)在 Profiler 中记录 UDF 调用的表吗?
最佳答案
你不能:多语句 TVF 是一个黑盒子,你只能获取 CPU、读取、写入等。
我所说的“黑匣子”是指它是另一个查询中完全封装和不透明的一系列语句,并且没有像您通过存储过程逐行获取那样的“流程”。
内联 TVF 像 View 或宏一样扩展到主查询中并且可以看到。
关于sql-server - 分析用户定义函数中的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435587/