1
5
运行简单的内联添加:
创建一个标量UDF,将一个值添加到一个整数中,然后运行1M次:
创建一个内联UDF,其速度与添加一样快,并运行100万次:
标量UDF与内联UDF在性能上的差异是显而易见的。 |
2
2
好吧,现在你打开了一个棘手的话题:-)我认为我们需要更现实的例子,避免玩捉迷藏游戏。看起来太做作的例子总是让我怀疑。所以 我稍微重新安排了查询,直接标量UDF的性能优于查询 . 不要相信它-试试看-这是在SQL2K8上,在2k8服务器Std下的开发盒上。 到目前为止,我们所学到的只是在WHERE子句中使用计算列和等价物是不好的。该查询在WHERE子句中使用标量函数,同时假装它在select中。
表“数字”。扫描计数1,逻辑读取3521,物理读取0,预读0,lob逻辑读取0,lob物理读取0,lob预读0。 SQL Server执行时间: CPU时间= 234毫秒 ,经过的时间=228毫秒。
SQL Server执行时间: CPU时间= 202毫秒 那么,既然我们已经解决了这个问题,那么一些真实的信息和真实的用例呢? 我将提供2个供讨论:-)但请记住,没有人为的陷阱。TVF和标量UDF只是调用它以方便的方式获取值,然后在查询中用作值或联接-没有人计算任何内容。是否有人可以构建一个表格或说明病理数据必须如何才能查看LCID1和LCID2之间的性能差异?
|
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
SoT · SQL Server中求和函数的工作方式 2 年前 |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |