Мне нужно оптимизировать запросы для просмотров,
Ниже приведен один из запросов, используемых в представлениях:
SELECT * FROM <tablename>
WHERE (2=(SELECT value FROM dbo.version WHERE a=<somevalue>))
Несмотря на то, что он показывает число выполнения как 0, но он дает стоимость как 19% при сканировании <tablename>
Как оптимизировать план выполнения?
Если я выполню запрос, как показано ниже, он даст 0% стоимости
SELECT * FROM <tablename> WHERE (2=(1))
Вот вид:
CREATE VIEW v1
AS
SELECT * FROM t1 WHERE (1=(SELECT value FROM config WHERE year=2019))
UNION ALL
SELECT * FROM t2 WHERE (2=(SELECT value FROM config WHERE year=2019))
GO
В настоящее время и t1, и t2 входят в фактический план выполнения, но я хочу, чтобы 2nd select не оценивался, если ist select равен true, и наоборот