В SQL Server, когда я должен использовать индексированное представление вместо реальной таблицы? - PullRequest
3 голосов
/ 05 октября 2010

Я знаю, что в SQL Server вы можете создавать индексы для представления, а затем представление сохраняет данные из базовой таблицы.Затем вы можете запросить представление.Но почему мне нужно использовать представление вместо таблицы?

Ответы [ 5 ]

3 голосов
/ 05 октября 2010

Вы можете использовать представление для упрощения запросов. В наших проектах консенсус заключается в использовании представлений для интерфейсов и особенно «интерфейсов отчетов».

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

С другой стороны, если ваш отчет попадает в представление, вы можете свободно крутить базу данных; Пока представление одинаковое, отчет работает, менеджер доволен, и вы можете экспериментировать с базой данных. Вы хотите отделить клиентские метаданные от основной клиентской таблицы? пойти на это, и объединить две таблицы в представлении. Вы хотите денормализовать информацию о корзине для клиента? нет проблем, вид может адаптироваться ...

Если честно, это мой взгляд как программиста, но db gurus наверняка найдет и другое применение:)

1 голос
/ 04 декабря 2013

Одним из преимуществ использования индексированного представления является упорядочение результатов из 2 или более столбцов, где столбцы находятся в разных таблицах. то есть, иметь представление, которое является результатом table1 и table2, отсортированных по table1.column1, table2.column2. Затем вы можете создать индекс для column1, column2 для оптимизации этого запроса

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

Таблица - это место, где физически хранятся данные.

Представление - это то, где таблицы суммируются или группируются, чтобы упростить использование групп таблиц.

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

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

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

В основном, используйте вид:

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

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

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

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

Оператор выбора для представления может ссылаться на таблицы, другие представления и функции.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...