Sql server UDF的SQL server查询统计信息

Sql server UDF的SQL server查询统计信息,sql-server,query-performance,Sql Server,Query Performance,当我运行一次存储过程并查看sys.dm_exec_query_stats中的查询统计信息时,我得到了正确的执行计数,即1 但是当我执行一次UDF时,我看到它的执行计数是4,在sys.dm_exec_query_stats中该UDF有3行 ObjName ExecutionCount AvgWorkerTime FNGETDOMESTIC编号1 3066 FNGETDOMESTIC号码2411 FNGETDOMESTIC编号1657 谁能帮我理解这一点 谢谢SQL Server可能正在重新编译UD

当我运行一次存储过程并查看sys.dm_exec_query_stats中的查询统计信息时,我得到了正确的执行计数,即1

但是当我执行一次UDF时,我看到它的执行计数是4,在sys.dm_exec_query_stats中该UDF有3行

ObjName ExecutionCount AvgWorkerTime

FNGETDOMESTIC编号1 3066 FNGETDOMESTIC号码2411 FNGETDOMESTIC编号1657

谁能帮我理解这一点


谢谢

SQL Server可能正在重新编译UDF。您可以通过运行SQL Server探查器并捕获SP:Recompile事件来验证这一点


此外,根据调用该函数的SQL查询,SQL Server可能会在每行数据中调用该函数一次。这可以解释2的执行计数。

UDF中有什么?querystats可以获取其他非结果生成查询insert/update/delete/set/select或其他函数调用或触发器。这是一个简单的函数,给定id,它返回一个数字。我按如下方式执行它:选择dbo.fGetDomesticNumber10