Представления и встроенные подзапросы SQL Server 2005/2008 - PullRequest
1 голос
/ 08 октября 2008

В некоторых областях моего приложения мне нужны данные из нескольких таблиц в базе данных (у меня есть приложение, у приложения много атрибутов, у каждого атрибута несколько определений, и у каждого определения есть значение). Мне нужны данные из всех этих таблиц для приложения. Должен ли я использовать представление (которое было бы довольно большим) или подзапросы для выбора записей? В случае подзапросов может ли оптимизатор работать эффективно? Мне также интересно, сработает ли кеширование для подзапросов.

Ответы [ 2 ]

2 голосов
/ 08 октября 2008

Представления, как правило, развертываются на месте в подзапросы, если вы явно не пометили представления как сохраненные путем добавления к ним кластерного индекса.

1 голос
/ 08 октября 2008

Это вопрос «Это зависит». Представление может помочь сделать код более понятным, но сложные предикаты выбора могут запутать оптимизатор.

Другая опция - это хранимая процедура, которая возвращает набор записей. Если вы повторно используете подзапрос несколько раз, вы можете получить некоторое расстояние от разбиения запроса, выбора подзапроса во временную таблицу и объединения частей на следующем шаге.

Без более конкретного описания проблемы трудно действительно дать осмысленный ответ.

...