Преимущество использования Представлений в MySQL

Я узнал, что представления могут использоваться для создания пользовательских "табличных представлений" (так сказать) что связанные с агрегатом данные из нескольких таблиц.

Мой вопрос: каковы преимущества представлений? А именно, скажем, у меня есть две таблицы:

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 обновляются, там какие-либо издержки, вовлеченные в обновление данных в представлении (полагающий, что это кэширует результирующие данные)?

22
задан Peter Mortensen 30 April 2011 в 23:46
поделиться

2 ответа

Вид не хранится отдельно: при запросе представления представление заменяется определением этого представления. Итак, и изменения данных в таблицах будут отображаться сразу через вид.

В дополнение к функции безопасности, указанной ранее:

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

Это также позволит вам изменить, как соединение выполняется в будущем в одном месте. Возможно, отношения с 1 ко многим могут стать соотношениями во многих отношениях, представляя дополнительную таблицу в присоединении. Или вы можете решить денормализовать и включать все поля EventType в каждой записи события, чтобы вам не нужно присоединиться каждый раз (торговое пространство для времени выполнения запроса).

Вы могли бы еще больше разделить таблицы позже, изменив его на трехстороннее соединение, а другие запросы с использованием представления не должны быть переписаны.

Вы можете добавить новые столбцы в таблицу (ы) и изменить представление, чтобы оставить новые столбцы, чтобы некоторые старые запросы с помощью «Выбрать *» не сломаются при изменении определений таблиц.

19
ответ дан 29 November 2019 в 05:13
поделиться

Вы можете ограничить пользователям представление вместо базовых таблиц (ов), тем самым повышая безопасность.

13
ответ дан 29 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: