Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по вьюешкам  [new]
relav
Member

Откуда:
Сообщений: 204
Вопрос следующий: Если у нас есть вьюшка, которая джойнит другую вьюшку(t) основанную на нескольких таблицах, и из этой другой вьюшки выбирается одно поле. Сервер будет джойнить все таблицы вьюшки (t) или он только приджойнит таблицу в которой находится нужное поле?
21 авг 15, 17:23    [18052825]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Все зависит от того что в Вашей вьюшке написано. Если во вью LEFT JOIN по таблице поля которой не используются в запросе со вью, то оптимизатор ее не будет использовать... во всяком случае будет думать делать это или нет.
21 авг 15, 17:26    [18052846]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37065
Сервер "раскрывает" представления и умеет исключать ненужные таблицы из выборки.
21 авг 15, 17:31    [18052882]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Гавриленко Сергей Алексеевич
Сервер "раскрывает" представления и умеет исключать ненужные таблицы из выборки.
Ага. Умеет.
Только это зависит от занятых в запросе представлений - на представлениях с "лихо закрученным сюжетом" (с) умеет делать это достаточно хреново (может оказаться сильно лучше переписать запрос на "без вью").
22 авг 15, 00:43    [18054057]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Ага. А еще не забываем на влияние на число итоговых записей.
Для того что бы оптимизатор мог отбросить "лишние" соединения он должен быть уверен, что этим соединением "не появляется" и "не отбрасывается" строк.

К примеру,
Outer apply(select top 1 * from ...)
Можно отбросить.

Ну и, конечно, можно отбросить соединения на уникальный индекс с проверенным констрейтом.
22 авг 15, 15:15    [18054595]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Ну и еще всяких там сорт топ внутри быть не должно
22 авг 15, 15:16    [18054597]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по вьюешкам  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
relav
Сервер будет джойнить все таблицы вьюшки (t) или он только приджойнит таблицу в которой находится нужное поле?
Он будет джойнить все таблицы, которые нужны для получения результата. Например, для фильтрации результата.
22 авг 15, 16:25    [18054671]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить