Представления и встроенные подзапросы SQL Server 2005/2008
-
05-07-2019 - |
Вопрос
В определенных областях моего приложения мне нужны данные из нескольких таблиц в базе данных (у меня есть приложение, у приложения много атрибутов, у каждого атрибута есть несколько определений, и у каждого определения есть значение). Мне нужны данные из всех этих таблиц для приложения. Должен ли я использовать представление (которое было бы довольно большим) или подзапросы для выбора записей? В случае подзапросов может ли оптимизатор работать эффективно? Мне также интересно, будет ли работать кэширование для подзапросов.
Решение
Представления, как правило, развертываются на месте в подзапросы, если вы явно не пометили представления как сохраненные путем добавления к ним кластерного индекса.
Другие советы
Это вопрос «Это зависит». Представление может помочь сделать код более понятным, но сложные предикаты выбора могут запутать оптимизатор.
Другой вариант - это хранимая процедура, которая возвращает набор записей. Если вы повторно используете подзапрос несколько раз, вы можете получить некоторое расстояние от разбиения запроса, выбора подзапроса во временную таблицу и объединения частей на более позднем этапе.
Без более конкретного описания проблемы трудно дать значимый ответ.