나는 [BadDates]라는 날짜 테이블을 가지고 있는데, 여기에는 모든 레코드가 제외 할 날짜 인 하나의 열만 있습니다. 다음과 같은 UDF가 있습니다.SQL Server 2005의 느린 UDF에 대한 도움말
CREATE FUNCTION [dbo].[udf_GetDateInBusinessDays]
(
@StartDate datetime, --Start Date
@NumberDays int --Good days ahead
)
RETURNS datetime
AS
BEGIN
-- Declare the return variable here
DECLARE @ReturnDate datetime
SET @ReturnDate = @StartDate
DECLARE @Counter int
SET @Counter = 0
WHILE @Counter < @NumberDays
BEGIN
SET @ReturnDate = DateAdd(d,1,@ReturnDate)
IF ((SELECT COUNT(ID)
FROM dbo.[BadDates]
WHERE StartDate = @ReturnDate) = 0)
BEGIN
SET @Counter = @Counter + 1
END
END
RETURN @ReturnDate
END
이 UDF는 훌륭하게 처리되지만 처리 속도가 느립니다. 이를 사용하는 저장 프로시 저는 모든 레코드에서 UDF를 실행합니다. 더 빠른 방법으로 동일한 기능을 제공하는 다른 방법이 있습니까?
도움을 주시면 대단히 감사하겠습니다.
당신은 달성하려는 것을 고위급 영어로 설명해 주시겠습니까? –