gpt4 book ai didi

列中的 SQL 函数运行缓慢

转载 作者:行者123 更新时间:2023-12-04 02:49:59 28 4
gpt4 key购买 nike

我有一个计算列(函数)导致我的一个表非常慢(它的输出是我表中的一列。我认为它可能是我函数中的一些逻辑语句。我注释掉了那些,只返回了一个名为 'test' 的字符串。这仍然导致表变慢。我相信 SELECT 语句正在减慢功能。当我注释掉了 select 语句,一切都很顺利。我想我没有以正确的方式使用函数。

FUNCTION [dbo].[Pend_Type](@Suspense_ID int, @Loan_ID nvarchar(10),@Suspense_Date datetime, @Investor nvarchar(10))
RETURNS nvarchar(20)
AS
BEGIN
DECLARE @Closing_Date Datetime, @Paid_Date Datetime
DECLARE @pendtype nvarchar(20)

--This is the issue!!!!
SELECT @Closing_Date = Date_Closing, @Paid_Date = Date_Paid from TABLE where Loan_ID = @Loan_ID

SET @pendtype = 'test'

--commented out logic

RETURN @pendtype
END

更新:

我有另一个计算列,它做类似的事情并且是同一个表中的一个列。这个跑得很快。有人看出为什么会这样吗?

Declare @yOrn AS nvarchar(1)
IF((Select count(suspense_ID) From TABLE where suspense_ID = @suspenseID) = 0)
SET @yOrn = 'N'
ELSE
SET @yOrn = 'Y'
RETURN @yOrn

最佳答案

您已在 select 语句中找出性能问题:

SELECT TOP 1 @Closing_Date = Date_Closing, @Paid_Date = Date_Paid
from TABLE
where Loan_ID = @Loan_ID;

为了加快运行速度,在 table(Load_id, Date_Closing, Date_Paid) 上创建一个复合索引。

顺便说一句,您正在使用没有order bytop。当多行匹配时,您可以取回其中任何一行。通常,toporder by 一起使用。

编辑:

您可以通过发出以下命令来创建索引:

create index idx_table_load_closing_paid on table(Load_id, Date_Closing, Date_Paid);

关于列中的 SQL 函数运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978621/

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