интересуется этим поведением с SQL Server.SELECT в подзапросе внутри оператора IN, зависающего SQL Server
Этот запрос дает результаты очень быстро, так же, как я бы ожидать:
SELECT *
FROM dbo.v_View1 View1 FULL OUTER JOIN
dbo.v_View2 View2 ON View1.Portfolio = View2.Portfolio AND
View1.AsOfDate = View2.AsOfDate
where (View1.AsOfDate IN (NULL, '20130717'))
Однако, я не хочу иметь статическую дату там, поэтому я заменил его подзапроса. К сожалению, самый длинный я ждал этого запроса выполнить 5 минут, прежде чем я отменил его, так что я не знаю, если он на самом деле хотел бы получить мне данные, которые я хочу:
SELECT *
FROM dbo.v_View1 View1 FULL OUTER JOIN
dbo.v_View2 View2 ON View1.Portfolio = View2.Portfolio AND
View1.AsOfDate = View2.AsOfDate
where (View1.AsOfDate IN (NULL, (SELECT MAX(AsOfDate) FROM dbo.v_View1)))
Я прибегала к объявляя переменную, устанавливая ее с подзапросом сверху и используя это в инструкции IN, которая работает как ожидалось и работает примерно так же быстро, как исходный запрос.
Я знаю, что я делаю что-то неправильно или что-то не хватает (возможно, оба) - что это? Я хотел бы иметь подзапрос в инструкции IN или, по крайней мере, иметь возможность запускать это как представление без переменных. Благодаря!
Посмотрите план выполнения. –