@AlexToArt

Насколько крамольно исключать запросы связанные через UNION по значению параметра?

Подскажите, является ли bad practice использование подобных конструкций?

DECLARE @P INT = 1;

SELECT * 
FROM (
    SELECT TOP(1000) id FROM Table1 WHERE @P = 1
    
        UNION ALL
    
    SELECT TOP(10000) id FROM Table2 WHERE @P = 2
    
        UNION ALL

    SELECT TOP(100000) id FROM Table3 WHERE @P = 3
) AS T


Насколько плохо подобная практика отражается на плане выполнения запроса?
Стоит ли создавать подобные table-valued functions или использовать в EXEC с параметризацией?

С точки зрения плана, выглядит разумно (кроме "it was eliminated in runtime").
Может ли это негативно сказаться на оценке запроса, использующего подобную функцию?
5d78c0d9b8b80318585461.png

P.S. Уверен, кейс частый, но статей на данную тему не нашёл.
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы