gpt4 book ai didi

sql - 在 select 语句中多次调用标量函数是否会多次运行该函数,如果是这样,如何解决这个问题

转载 作者:行者123 更新时间:2023-12-02 18:10:31 26 4
gpt4 key购买 nike

如果我有一个 select 语句,其中包含用于各种计算的标量函数,该标量函数是否会被多次调用?如果是这样,有没有办法对其进行优化,以便每次选择只调用该函数一次,因为在我的实际查询中,它将被调用数千次,每次选择 X 6 次。

例如:

SELECT 
[dbo].[fn_Days](@Account) + u.[DayRate],
[dbo].[fn_Days](@Account) / u.[WorkDays]
FROM [dbo].[tblUnit] u

fn_days 所做的只是返回工作天数的整数。

最佳答案

是的,标量会按照您编码的方式被多次调用。让它工作的一种方法是将其包装到一个子查询中,如下所示:

SELECT t.[days] + t.[DayRate],
t.[days] / t.[WorkDays]
FROM (
SELECT
[dbo].[fn_Days](@Account) as days,
u.[DayRate],
u.[WorkDays]
FROM [dbo].[tblUnit] u) as t

这样 fn_Days 每行只会被调用一次,而不是像您提到的那样调用两次或六次。

希望这有帮助。

关于sql - 在 select 语句中多次调用标量函数是否会多次运行该函数,如果是这样,如何解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112022/

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