Индексы
Если на быстродействие влияют тяжелые запросы к СУБД, вы можете ускорить доступ к данным. Для получения выборки данных из больших списков, например, состоящих из более 10 млн записей, рекомендуется формировать запрос в два этапа: событие Предварительная фильтрация (PreFiltering) отфильтрует данные по базовым критериям, событие Фильтрация (Filtering) – по остальным. Запрос выполняется в два этапа только на веб-сервере и для баз данных на основе PostgreSQL.
Если этого недостаточно для ускорения получения данных, то можно оптимизировать процесс с помощью индексов. Чаще всего их применяют для виджетов, отчетов, папок, в том числе вычисляемых.
Для быстрого доступа к данным:
1.Добавьте SQL-запрос для создания индекса. Например:
CREATE NONCLUSTERED INDEX {1} ON {0}
(
[Discriminator],
[Performer],
[Author],
[MainTask],
[CompletedBy],
[Created]
)
2.Создайте индекс при инициализации модуля. Например:
public static void CreateAssignmentIndices();
{
var tableName = Sungero.Docflow.Constants.Module.SungeroWFAssignmentTableName;
var indexName = "idx_Asg_Discriminator_Performer_Author_MTask_ComplBy_Created";
var indexQuery = string.Format(Queries.Module.SungeroWFAssignmentIndex0Query, tableName, indexName);
Functions.Module.CreateIndexOnTable(tableName, indexName, indexQuery);
}
Общие рекомендации по построению индекса:
•не используйте индексы для поиска по небольшим таблицам. Поиск в этом случае не будет оптимальным;
•по возможности используйте уникальные индексы, так как уникальность значений в столбце повышает производительность индекса;
•в составном индексе учитывайте порядок столбцов. Указывайте первыми столбцы, которые используются в запросах с WHERE. Следующие нужно перечислять с учетом уникальности их значений, то есть столбцы с самыми уникальными данными указываются в первую очередь;
•имя индекса задавайте длиной не более 63 символа. Это нужно для поддержки работы СУБД на основе PostgreSQL;
•в имени индекса обозначьте таблицу, для которой создается индекс, и основные поля, по которым строится индекс.
© Компания Directum, 2024 |