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

StackOverflow https://stackoverflow.com/questions/3861476

  •  27-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Представление в том, где таблицы суммированы или сгруппированы, чтобы упрощать группы таблиц.

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

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

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

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

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

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

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

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

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

Если ваш проиндексированный вид выбирает только столбцы из одной таблицы, вы можете просто поместить индекс на эту таблицу и запросить этот стол непосредственно, представление только приведет к накладной расходы для вашей базы данных. Тем не менее, если ваше выделенное оператор охватывает несколько таблиц с присоединениями и т. Д., ЧЕМ вы можете получить повышение производительности, поместив индекс на вид.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top