Локальная переменная SQL Server, вызывающая проблемы с производительностью - PullRequest
1 голос
/ 10 июля 2019

Я собираюсь сделать это как можно проще. После нескольких часов отладки я обнаружил источник моего DRASTIC замедления.

DECLARE @Id INT = 9999

SELECT * 
FROM dbo.FN_Whatever(@Id, NULL, NULL)

Время исполнения: 15 минут

SELECT * 
FROM dbo.FN_Whatever(9999, NULL, NULL)

Время выполнения: 0 секунд

Пожалуйста, помогите мне понять эту неприятную проблему ...

Вот эта функция немного заглохла (код частной компании, так что ...)

CREATE FUNCTION FN_Whatever
    (@Id INT,
     @V1 INT = NULL,
     @V2 INT = NULL)
RETURNS TABLE
AS
    RETURN 
        SELECT T1.Id, T1.Value
        FROM Table T1
        LEFT JOIN (SELECT X
                   FROM Table T2
                   WHERE Id = @Id
                     AND (@V1 IS NULL OR x = @V1)
                     AND (@V2 IS NULL OR y = @V2)
                   GROUP BY x, y, z) SH_List ON ...
        JOIN 
            FN_2 (@Id, @V1) FN1 ON ...
        WHERE 
            Id = @Id
            AND (@V1 IS NULL OR x = @V1)
            AND (@V2 IS NULL OR y = @V2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...