Задать вопрос
@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. Уверен, кейс частый, но статей на данную тему не нашёл.
  • Вопрос задан
  • 164 просмотра
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    SQL для разработки
    4 месяца
    Далее
  • Нетология
    Продвинутый SQL
    5 недель
    Далее
  • Академия Eduson
    SQL-разработчик: тариф Базовый
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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