gpt4 book ai didi

sql - 为什么一个简单的 T-SQL UDF 函数会使代码执行速度慢 3 倍

转载 作者:行者123 更新时间:2023-12-02 13:59:21 25 4
gpt4 key购买 nike

我正在重写一些旧的存储过程,并且在使用函数而不是内联代码时遇到了意外的性能问题。

功能非常简单,如下:

ALTER FUNCTION [dbo].[GetDateDifferenceInDays] 
(
@first_date SMALLDATETIME,
@second_date SMALLDATETIME
)
RETURNS INT
AS
BEGIN

RETURN ABS(DATEDIFF(DAY, @first_date, @second_date))

END

所以我有两个相同的查询,但一个使用该函数,另一个在查询本身中进行计算:

ABS(DATEDIFF(DAY, [mytable].first_date, [mytable].second_date))

现在,使用内联代码的查询运行速度比使用该函数的查询快 3 倍。

最佳答案

您拥有的是一个标量 UDF(接受 0 到 n 个参数并返回一个标量值)。此类 UDF 通常会导致查询的逐行操作,除非使用常量参数进行调用,否则会导致您在查询中遇到的性能下降。

参见here , herehere了解使用 UDF 的性能缺陷的详细说明。

关于sql - 为什么一个简单的 T-SQL UDF 函数会使代码执行速度慢 3 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com