Использование представлений в базе данных для оптимизации
производительности
Продвинутый
Данный материал предназначен для продвинутых пользователей. Если у вас есть вопросы по применению, обратитесь в Техническую поддержку BPMSoft.
Один из способов улучшить производительность запросов в базе данных — использовать представления (view).
Представления полезны при следующих ситуациях:
- Часто выполняются сложные запросы с несколькими таблицами;
- Медленно работают запросы с JOIN, GROUP BY и агрегацией;
- Запросы с фильтрами на больших таблицах выполняются долго;
- Запрос возвращает всю таблицу, а бизнес-логика использует лишь часть данных.
Создание представления
Чтобы создать представление, выполните следующие шаги:
- Добавьте новый объект в конфигурацию системы.
- В разделе «Поведение» объекта установите свойство «Представление в базе данных».
Рисунок 1 — Свойство «Представление в базе данных»
- Добавьте колонку Id со следующими свойствами:
- Тип данных — «Уникальный идентификатор»;
- Обязательность — «На уровне приложения»;
- Значение по умолчанию — «Новый идентификатор»;
- Режим использования — «Расширенный».
Рисунок 2 — Выбор значения по умолчанию
- Вернитесь к свойствам объекта и выберите в поле «Идентификатор» раздела «Настройки объекта» добавленную колонку Id.
Примечание. Можно не добавлять колонку Id вручную. Для этого достаточно унаследовать объект от BaseEntity. Тогда система автоматически добавит поля CreatedOn, CreatedById, ModifiedOn и ModifiedById. Однако это также снизит производительность, так как будут унаследованы и другие поля.
- Добавьте другие необходимые колонки, например, UsrAddress и UsrAddressType.
- Выполните скрипт для создания представления в базе данных.
PostgreSQL
create view "UsrVwContactAddress"
as
select
"ContactAddress"."Id",
"ContactAddress"."Address" as "UsrAddress",
"AddressType"."Name" as "UsrAddressType"
from
"ContactAddress"
inner join "AddressType"
on "ContactAddress"."AddressTypeId" = "AddressType"."Id";
Microsoft SQL Server
CREATE VIEW UsrVwContactAddress
AS
SELECT
ContactAddress.Id,
ContactAddress.Address AS UsrAddress,
AddressType.Name AS UsrAddressType
FROM
ContactAddress
INNER JOIN AddressType
ON ContactAddress.AddressTypeId = AddressType.Id;
При создании представления учитывайте следующие ограничения:
- Названия полей в базе данных должны совпадать с названиями колонок объекта. Исключение — объекты типа «Справочник». В этом случае к названию колонки добавляется постфикс "Id" (например, UsrAccountId);
- Количество колонок объекта и полей в представлении должно быть одинаковым. Если их будет больше, система выдаст ошибку. Если меньше, производительность снизится;
- Представление должно соответствовать требованиям системы. Для этого нужно реализовать поля CreatedOn, CreatedById, ModifiedOn и ModifiedById;
- Названия представления и полей должны учитывать префикс, используемый в системе (системная настройка «Префикс названия объекта»).
Рекомендуем изучить
Материал был полезен для вас?