Подскажите, является ли 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").
Может ли это негативно сказаться на оценке запроса, использующего подобную функцию?
P.S. Уверен, кейс частый, но статей на данную тему не нашёл.