Функции SQL очень медленно - PullRequest
0 голосов
/ 13 мая 2019

Я не специалист по функциям. Унаследовал следующую функцию, которая очень медленно

ALTER FUNCTION [dbo].[fn_Diagnosed]
( @clientId As int)
RETURNS NVARCHAR(10)
AS
BEGIN
DECLARE @result  int;
Declare @return nvarchar(10);
set @result = (SELECT COUNT(*)
FROM  dbo.AdditionalInfo 
WHERE  dbo.AdditionalInfo.Type = 'Diagnosed' and  ClientId = @ClientId);
IF @result > 0
   set @return = 'Yes'
ELSE
   set @return = 'No';    
return @return;
END

Это правильный способ написания функции?

1 Ответ

2 голосов
/ 13 мая 2019

Ваша функция выглядит хорошо.Индекс не создается автоматически для ограничения внешнего ключа.Итак, вы должны явно добавить индекс, например,

CREATE INDEX ClientAdditionalInfo_ClientID
    ON [dbo].[ClientAdditionalInfo]
    (ClientID)
    INCLUDE ([Type])
...