Повторно выполнить запрос о сохранении результатов в табличной переменной? - PullRequest
1 голос
/ 13 июля 2010

Я нахожусь в ситуации, когда мне нужно запускать несколько раз одни и те же запросы. Я должен посмотреть, если одна из возвращенных строк соответствует определенному значению (запрос 1), в противном случае я должен вернуть первую строку набора результатов (запрос 2). В SQL Server 2008 мне интересно, что лучше: выполнение запроса и сохранение результатов в табличной переменной или повторный запрос дважды (т. Е. SELECT * FROM Bla WHERE Bla.Column IN (...) и SELECT TOP 1 * ОТ БЛА)?

Какое из двух решений предпочтительнее и / или быстрее?

1 Ответ

0 голосов
/ 13 июля 2010

Ничего "чистого", если честно, правда

SELECT * INTO #foo FROM Bla WHERE Bla.Column IN (...)
IF @@ROWCOUNT = 0 
    SELECT TOP 1 * FROM Bla
ELSE
    SELECT * FROM #foo

Цель этого фрагмента

  • дотронуться до Бла как можно меньше
  • вернуть один набор записей

Это может быть сделано в одном СОЮЗЕ ВСЕ с NOT IN или EXISTS, но это означает, что Бла будет больше касаться.

Я не уверен, если это ваш вариант 1 или 2 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...