Я узнал, что представления могут использоваться для создания пользовательских "табличных представлений" (так сказать) что связанные с агрегатом данные из нескольких таблиц.
Мой вопрос: каковы преимущества представлений? А именно, скажем, у меня есть две таблицы:
event | eid, typeid, name
eventtype | typeid, max_team_members
Теперь я создаю представление:
eventdetails | event.eid, event.name, eventtype.max_team_members
| where event.typeid=eventtype.typeid
Теперь, если я хочу максимальному числу членов, разрешенных в команде для некоторых event
, Я мог:
Каковы были бы мои преимущества/недостатки в каждом методе?
Другой запрос: если данные в событиях таблицы и eventtypes обновляются, там какие-либо издержки, вовлеченные в обновление данных в представлении (полагающий, что это кэширует результирующие данные)?
Вид не хранится отдельно: при запросе представления представление заменяется определением этого представления. Итак, и изменения данных в таблицах будут отображаться сразу через вид.
В дополнение к функции безопасности, указанной ранее:
Если вы пишете большое количество запросов, которые выступили бы, что присоединяются, это факторы, что код SQL. Как делать некоторые операции в функции, используемой в нескольких местах, она может облегчить чтение / запись / отладку.
Это также позволит вам изменить, как соединение выполняется в будущем в одном месте. Возможно, отношения с 1 ко многим могут стать соотношениями во многих отношениях, представляя дополнительную таблицу в присоединении. Или вы можете решить денормализовать и включать все поля EventType в каждой записи события, чтобы вам не нужно присоединиться каждый раз (торговое пространство для времени выполнения запроса).
Вы могли бы еще больше разделить таблицы позже, изменив его на трехстороннее соединение, а другие запросы с использованием представления не должны быть переписаны.
Вы можете добавить новые столбцы в таблицу (ы) и изменить представление, чтобы оставить новые столбцы, чтобы некоторые старые запросы с помощью «Выбрать *» не сломаются при изменении определений таблиц.
Вы можете ограничить пользователям представление вместо базовых таблиц (ов), тем самым повышая безопасность.