表值函数与 UDF SQL Server

Stu*_*ler 1 sql-server

我目前正在看这个Entity Framework 上视频,大约 15 分钟后,演讲者说表值函数偶尔会执行 UDF。

我的问题是在什么情况下 TVF 会执行 UDF?

gbn*_*gbn 8

  • 具有表访问权限的标量 UDF 就像在 RBAR 游标中查找一样。也就是说,它每行执行一次。这是优化者的黑匣子
  • TVF 是一个像视图一样扩展的宏,并被视为外部查询的一部分

标量 UDF 有用途,但不是在这种情况下。

性能差异可能很大:通过删除 UDF 的愚蠢使用,我实现了 x100,000+ 的改进