Представления в PostgreSQL - это графические таблицы, отображающие данные из соответствующих таблиц. Общие представления также могут быть изменены. PostgreSQL выводит концепцию представлений на следующий этап, позволяя представлениям хранить материальную информацию, называемую материализованными представлениями. Материализованное представление сохраняет вывод трудоемкого и сложного запроса, позволяя вам быстро запросить результаты в любое время. Материализованные точки зрения часто используются в хранилищах данных и приложениях бизнес-аналитики, поскольку они полезны в ситуациях, когда требуется быстрый доступ к данным.
Зачем использовать материализованные представления?
Если команда просмотра слишком медленная для вас, вы можете предпочесть материализованное представление. Материализованные представления обладают большой универсальностью, позволяя сохранять материальное представление в базе данных с более коротким временем доступа. Предположим, что вам необходимо создать запрос к базе данных для объединения нескольких таблиц, удаления строк из объединенной коллекции и сортировки таблиц различными способами. Это может быть сложный и трудоемкий запрос, и без материализованных представлений вы в конечном итоге будете использовать материализованное представление для решения этой дилеммы. В этой статье рассказывается, как использовать материализованные представления в PostgreSQL.
Синтаксис
>> СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД имя_представления КАК запрос С [НЕТ] ДАННЫХ;Объяснение этого общего взгляда следующее:
- View_name: Заголовок представления, которое будет создано с помощью оператора CREATE MATERIALIZED VIEW.
- Запрос: Запрос, который получает данные из соответствующих таблиц.
- С [НЕТ] ДАННЫХ: выберите опцию С ДАННЫМИ, чтобы включить информационные данные в материализованное представление во время разработки; в противном случае выберите БЕЗ ДАННЫХ. Представление помечается как непонятное, если вы используете опцию WITH [NO] DATA, что означает, что вы не сможете искать информацию в представлении, пока не загрузите в него данные.
Как использовать материализованные представления
Запустите оболочку командной строки PostgreSQL, чтобы начать работу с материализованными представлениями.
Укажите имя сервера, базу данных, с которой вы хотите работать, номер порта и имя пользователя, чтобы начать использовать командную оболочку. Оставьте эти поля пустыми, если хотите использовать систему по умолчанию.
Пример 1: простой вид
Чтобы понять материализованное представление, вам сначала нужно понять простые представления. Итак, создайте новую таблицу «Студент», используя команду CREATE TABLE, как добавлено.
>> СОЗДАТЬ ТАБЛИЦУ Student (sid serial PRIMARY KEY, sname VARCHAR (100) NOT NULL, age VARCHAR (100) NOT NULL);
После этого вставьте в него данные с помощью запроса INSERT.
Получите записи из таблицы "Студент", используя оператор SELECT для простого представления.
>> ВЫБРАТЬ * ОТ студента;
Пример 2: Простое материализованное представление
Теперь пора охватить материализованное представление. Мы будем использовать таблицу «Студент» для создания материализованного представления. Мы создадим материализованное представление с именем 'std_view' с помощью команды 'CREATE MATERIALIZED VIEW'. В этом представлении мы будем извлекать поле имени студента «sname» из таблицы «Student», сгруппировать и отсортировать его в возрастающем порядке в столбце «sname».
>> СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД std_view КАК ВЫБРАТЬ sname ИЗ ГРУППЫ студентов ПО sname ORDER BY sname;
Теперь, используя запрос SELECT для выполнения представления, мы вернем имена студентов в столбце sname таблицы Student.
>> ВЫБРАТЬ * ИЗ std_view;
Пример 3: Материализованное представление с использованием предложения WHERE
Теперь мы создадим материализованное представление, используя предложение WHERE. Рассмотрим следующую таблицу «Студент» с некоторыми изменениями ее значений.
Затем мы создадим материализованное представление с именем teststd, используя запрос CREATE MATERIALIZED VIEW. Мы выберем записи таблицы «Студент», где значение столбца «возраст» больше 25, используя предложение WHERE. Запрос работает правильно, как видно на картинке.
>> СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ПРОСМОТР teststd КАК ВЫБРАТЬ sid, sname, age FROM Student WHERE age> '25';
Наконец, мы выполним только что созданное материализованное представление с помощью команды SELECT, как показано ниже. Вы увидите, что он вернет все записи из таблицы «Студент», в которой столбец «возраст» имеет значение больше 25.'
>> ВЫБРАТЬ * ИЗ teststd;
Пример 4: Обновить материализованное представление с помощью предложения WITH NO DATA
В этом примере мы создадим материализованное представление, в котором мы будем использовать предложение WITH NO DATA для обновления представления. Предположим, что следующая таблица "Студент" с некоторыми изменениями в ее значениях.
Теперь мы создадим материализованное представление teststd. Это представление выберет записи из таблицы "ученики", в которой возраст учащихся меньше 40 лет."Выбранные записи будут сгруппированы и отсортированы по возрастанию в столбце" sid ". В конце запроса мы будем использовать предложение WITH NO DATA, чтобы указать, что запрос не будет сохранять какую-либо информацию в материализованном представлении. Представление, показанное ниже, должно успешно выполнять эти действия.
>> СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ПРОСМОТР teststd КАК ВЫБРАТЬ sid, sname, age FROM Student WHERE age < '40' GROUP BY sid ORDER BY sid WITH NO DATA;
Когда вы добавляете предложение "БЕЗ ДАННЫХ" в материализованное представление, создается пустое представление. Это материализованное представление не запрашивается. Как вы можете видеть на следующем изображении, он не получает записи во вновь созданном представлении.
Оператор REFRESH MATERIALIZED VIEW используется для импорта данных в материализованное представление. Заполните материализованное представление, выполнив следующий запрос REFRESH MATERIALIZED VIEW в оболочке. Как видите, этот запрос сработал эффективно.
>> ОБНОВИТЬ МАТЕРИАЛИЗОВАННЫЙ ПРОСМОТР teststd;
Опять же, выберите записи материализованного представления teststd с помощью оператора SELECT в оболочке. На этот раз запрос SELECT работает правильно, потому что оператор REFRESH загрузил содержимое в материализованное представление.
Пример 5: Отбросить материализованное представление
Следующая команда удалит материализованное представление.
>> УДАЛИТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД std_view;
Заключение
В этой статье показано, как использовать материализованные представления с помощью предложения WHERE и запросов REFRESH в оболочке командной строки.