Каковы недостатки представлений SQL? - PullRequest
6 голосов
/ 04 октября 2010

Недавно я встретился на собеседовании, и мне задали вышеуказанный вопрос.

Я был глуп, когда думал об этом.

Интервьюер сказал:

Все люди говорят, что взгляды имеют много преимуществ, но я не нахожу недостатки, почему так?

EDIT

Основываясь на ответах всех экспертов, я думаю, что могу подвести итог:

  1. Когда таблица удаляется или изменяется, представление становится неактивным, это зависит от объектов таблицы.
  2. Не всегда мы можем выполнять операторы DML, так как обычно представления создаются для сложного запроса и зависят от нескольких таблиц. Таким образом, существует больше возможностей нарушения ограничений базы данных при выполнении операторов DML.
  3. Поскольку представления обычно используются для сложного статического запроса, не всегда мы можем использовать одну и ту же ситуацию для использования этого статического запроса. Например; Если вы запрашиваете просмотр, то похоже, что вы экономите время, но если вы ищете мало информации из вида, то вы можете столкнуться с проблемой деградации до преобразования.

Ответы [ 7 ]

4 голосов
/ 04 октября 2010

Большинство вещей, которые я бы сказал, уже были рассмотрены, но я бы добавил это.

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

4 голосов
/ 04 октября 2010
  1. , когда таблицы нет, представление не будет работать.

  2. dml невозможно, если это более одной таблицы.1009 *

    это также объект базы данных, поэтому он будет занимать пространство.

  3. Когда таблица отброшена, представление становится неактивным .. это зависит от объектов таблицы.*

  4. Запрос из представления занимает больше времени, чем прямой запрос из таблицы

2 голосов
/ 04 октября 2010

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

Крис Маллинс определяет три основных правила реализации представления:

  • Правило использования вида
  • Правило предотвращения распространения
  • Правило синхронизации просмотра

Если вы не понимаете этого правильно, у вас возникают проблемы с обслуживанием кода, проблемами с производительностью, проблемами безопасности и т. Д.

1 голос
/ 08 февраля 2018
  1. Если вы напишите несколько сложных представлений, при запросе простых данных из представления это займет больше времени.

  2. Влияет на производительность. Запрос из представления занимает больше времени, чем прямой запрос из таблицы.

  3. Если представление объединит более одной таблицы, вы не можете выполнять DML операции.

  4. Зависимость таблицы - если вы меняете таблицу, вам нужно обновлен вид также.

1 голос
/ 04 сентября 2017

1) при удалении таблицы вид будет затронут.2) Если имя столбца переименовано, то в представлении отобразится исключение «Неверное имя столбца».3) Когда представление создается для большой таблицы, оно занимает немного памяти.

1 голос
/ 04 октября 2010

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

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

0 голосов
/ 04 октября 2010

Представление позволяет администратору базы данных (DBA) жестко контролировать то, что входит и выходит из базы данных.

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

  • последнее изменение (когда было сделано последнее изменение)
  • последнее действие (обновление/ delete / add)
  • last-actioner (лицо, обновившее строку)

Таким образом, при отображении представления таблицы отображается только последнее обновление или добавление какой-либо строки.Однако таблица по-прежнему содержит все существующие изменения и удаление строк.

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

...