Индексы в 1С
Зачем нужны индексы
Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному критерию путём последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска. Ускорение работы с использованием индексов достигается в первую очередь за счёт того, что индекс имеет структуру, оптимизированную под поиск — например, сбалансированного дерева.
Если простым языком индекс похож на содержание книги, когда вам надо найти что-то в книге у вас два варианта:
1. Если содержания нет - просмотреть всю книгу с первой по последнюю страницу в поисках нужной главы. Повторять это для каждого запроса.
2. Зайти в содержание (индекс), найти быстро номер страницу нужной главы (адрес). Перейти на нужную страницу.
Понятно что второй способ занимает, особенно если книга большая*, намного меньше времени. А если повторять это многократно то время экономится глобально (читай - ресурсы сервера).
* - Важно! Если книга очень маленькая, то использование содержания (индекса) становится бесполезным и даже вредным, проще просмотреть две страницы и сразу выяснить искомую главу.
Как выглядят индексы в базе 1С
В файловом режим базы данных (*.1cd) индексы не увидишь, а вот если база в клиент-серверном варианте, то индексы выглядят в консоли СУБД примерно так:
Да, и тут сразу становится понятно что "индексы 1С" это на самом деле никакие не 1с индексы а обычные индексы базы данных, которые всегда существовали, 1С использует индексы также как и все остальные программы.
Как добавить индексы в 1С
В базу 1С индексы могут быть добавлены двумя способами:
1. Платформой автоматически. Независимо от действий программиста, при создании объектов метаданных в дереве (справочники, документы, регистры), одновременно с созданием в БД соотвествущей таблицы (таблиц), платформа создает и индексы для этих таблиц.
2. Явным указанием программиста. Программист может частично управлять созданием индекса, в "свойствах" реквизита для этого выделен специальный элемент "индексировать":
Учтите, что индекс "неожиданно" может содержать при этом другие поля, так что не удивляйтесь когда решите проверить какой именно индекс создался "по настоящему" в БД. Полное описание как система поведет себя описано ниже в этой статье. Например, если в примере выше поставить "видНоменклатуры" = "индексировать"; согласно таблице ниже будет создан индекс "[ОРРХ | ОРНР1 +] Реквизит + Ссылка", т.е. составной индекс включающий одновременно несколько колонок таблицы БД.
Конкретно в этом случае не используется разделение данных и ОРРХ | ОРНР1 не будет. Значит будет создан индекс "Реквизит + Ссылка", включающий в себя целевой реквизит "вид номенклатуры" и еще колонку "ссылка", составной индекс по двум полям таблицы.
Справка 1С:
Кроме варианта "Индексировать" в данном свойстве для большинства объектов можно установить вариант "Индексировать с доп. упорядочиванием". Данный вариант предназначен, прежде всего, для использования в динамических списках.
В варианте "Индексировать" строится индекс непосредственно по реквизиту. Индекс также дополняется ссылкой, чтобы обеспечить определенный порядок записей в индексе при повторяющихся значениях реквизита.
В варианте "Индексировать с доп. упорядочиванием" индекс строится по реквизиту, а также по некоторому полю, которое обычно используется для упорядочивания объектов этого типа. Для справочника индекс в зависимости от основного представления дополняется кодом или наименованием. А для документа, индекс дополняется датой. Этот индекс также дополняется ссылкой.
Таким образом при определении варианта свойства Индексировать следует исходить из того, какие варианты выборки информации необходимо оптимизировать в первую очередь. Например, если требуется просмотр списка с отбором по реквизиту, то имеем смысл использовать вариант "Индексировать с доп. упорядочиванием". А если индекс нужен, например, только для поиска с помощью запроса объектов по данному реквизиту без упорядочивания, то лучше использовать вариант "Индексировать", чтобы создаваемые индекс требовал меньше ресурсов системы.
Есть еще один способ явно указать платформе что надо создать индекс, необходимо этот реквизит справочника включить в какой-нибудь "критерий отбора".
Внимание! Не стоит всем полям выставлять "индексировать", во первых за все надо платить, индекс замедляет запись в БД, во вторых если вы добавили индекс еще не факт что вы в него "попадете". Да-да, наличие индекса еще не гарантирует что СУБД будет его использовать, подробней ищите по словам "анализ планов запроса". Например, при создании запроса по регистру накопления (виртуальная таблица остатков), необходимо в условиях ГДЕ указывать последовательно все измерения в порядке указанном в конфигураторе (!) или дополнительно индексировать часто используемые измерения, почему? автоматически создается один единственный индекс содержащий все измерения регистра и чтобы "попасть" в индекс надо перечислять их в порядке как в индексе и без пропусков полей. Смотри Оптимизация запросов 1С.
Есть еще один способ - добавить индекс в вашем запросе, используется для временных таблиц. Во время написания запроса пишем "ИНДЕКСИРОВАТЬ ПО" после которого перечислить поля, по которым нужно построить индекс. Например:
ВЫБРАТЬ
Код,
Наименование
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ Справочник.Номенклатура
ИНДЕКСИРОВАТЬ ПО Код
Поля, по которым происходит индексирование, должны находиться в списке выборки.
Можно ли обойти ограничения платформы по индексам
Ограничение платформы - 1С сама добавляет к вашему индексу дополнительные колонки, т.е. делает его составным. А вот если вы решили сделать составной индекс из нескольких реквизитов, то эта возможность наоборот отсутствует.
Частично можно обойти ограничение следующим образом. Вычислить имя таблицы, есть обработки которые показывают настоящие имена таблиц, создать запрос создания индекса, примерно такой:
CREATE UNIQUE NONCLUSTERED INDEX [_IncludeIndex] ON [dbo].[_Reference477]
(
[_Fld105061] ASC, -- Фамилия
[_Fld105062] ASC, -- Имя
[_Fld105063] ASC, -- Отчество
[_Fld11066] ASC, -- Дата рождения
[_IDRRef] ASC -- Ссылка
)
INCLUDE (
-- Включенные столбцы
[_Code], -- Код
[_Description] -- Наименование
)
Выполняем его в консоли СУБД, готово индекс добавлен и будет работать.
Есть проблема, при реструктуризации базы данных (например после изменения справочника) все те индексы, что Вы создадите скриптами самостоятельно будут удалены. Вам потребуется заново запустить эти скрипты после реструктуризации, например, добавив их в Jobs на сервере СУБД на ежедневный запуск.
Внимание! Прежде чем лепить свои индексы попробуй оптимизировать код запроса средствами 1С, возможно одно добавленное условие, или смена порядка, приведет к "попаданию в индекс" и запрос ускорится в разы! Также не забывай что у тебя есть способ указать для реквизита "индексировать".
Как обслуживать индексы в базе 1С
А надо что-то делать? Ведь индексы уже созданы автоматически? Да, надо. Необходимо еженедельно\ежедневно и в некоторых случая частично ежечасно обновлять данные в индексах, чтобы они работали действительно эффективно. Для этого существуют стандартные команды обновления и\или перестроения индекса которые необходимо отправлять СУБД. Как правило для этого создают регламентную работу на сервере СУБД и она выполняется автоматически.
В MSSQL это можно сделать одной мышью в "планах обслуживания" - создаем задачу, указываем базу - готово. Выглядит примерно так.
Чтобы не издеваться над сервером лучше выполнять это не чаще раза в сутки во время когда БД не используется. Обязательно делать бэкап базы перед выполнением.
Для ежечасного обновления информации в индексах можно использовать скрипт, который будет дефрагментировать только индексы которые в этом нуждаются, например такой
-------------------------------------------
-- НАСТРАИВАЕМЫЕ ПАРАМЕТРЫ
-- База данных для анализа
USE <BASENAME>
-------------------------------------------
-- СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ
DECLARE @object_id int; -- ID объекта
DECLARE @index_id int; -- ID индекса
DECLARE @partition_number bigint; -- количество секций если индекс секционирован
DECLARE @schemaname nvarchar(130); -- имя схемы в которой находится таблица
DECLARE @objectname nvarchar(130); -- имя таблицы
DECLARE @indexname nvarchar(130); -- имя индекса
DECLARE @partitionnum bigint; -- номер секции
DECLARE @fragmentation_in_percent float; -- процент фрагментации индекса
DECLARE @command nvarchar(4000); -- инструкция T-SQL для дефрагментации либо ренидексации
-------------------------------------------
-- ТЕЛО СКРИПТА
-- Отключаем вывод количества возвращаемых строк, это несколько ускорит обработку
SET NOCOUNT ON;
-- Удалим временные таблицы, если вдруг они есть
IF OBJECT_ID('tempdb.dbo.#work_to_do') IS NOT NULL DROP TABLE #work_to_do
-- Отбор таблиц и индексов с помощью системного представления sys.dm_db_index_physical_stats
-- Отбор только тех объектов которые:
-- являются индексами (index_id > 0)
-- фрагментация которых более 5%
-- количество страниц в индексе более 128
SELECT
object_id,
index_id,
partition_number,
avg_fragmentation_in_percent AS fragmentation_in_percent
INTO #work_to_do
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')
WHERE index_id > 0
AND avg_fragmentation_in_percent > 5.0
AND page_count > 128;
-- Объявление Открытие курсора курсора для чтения секций
DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;
OPEN partitions;
-- Цикл по секциям
FETCH NEXT FROM partitions INTO @object_id, @index_id, @partition_number, @fragmentation_in_percent;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Собираем имена объектов по ID
SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
FROM sys.objects AS o
JOIN sys.schemas as s ON s.schema_id = o.schema_id
WHERE o.object_id = @object_id;
SELECT @indexname = QUOTENAME(name)
FROM sys.indexes
WHERE object_id = @object_id AND index_id = @index_id;
SELECT @partition_number = count (*)
FROM sys.partitions
WHERE object_id = @object_id AND index_id = @index_id;
-- Если фрагментация менее или равна 30% тогда дефрагментация, иначе реиндексация
IF @fragmentation_in_percent < 30.0
SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';
IF @fragmentation_in_percent >= 30.0
SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';
IF @partition_number > 1
SET @command = @command + N' PARTITION=' + CAST(@partition_number AS nvarchar(10));
-- Выполняем команду
EXEC (@command);
PRINT N'Index: object_id=' + STR(@object_id) + ', index_id=' + STR(@index_id) + ', fragmentation_in_percent=' + STR(@fragmentation_in_percent);
PRINT N'Executed: ' + @command;
-- Следующий элемент цикла
FETCH NEXT FROM partitions INTO @object_id, @index_id, @partition_number, @fragmentation_in_percent;
END;
-- Закрытие курсора
CLOSE partitions;
DEALLOCATE partitions;
-- Удаление временной таблицы
DROP TABLE #work_to_do;
GO
Штатная реиндексация в 1С
В конфигураторе через меню Администрирование - Тестирование и исправление, можно попасть в форму где можно выбрать работу по реиндексации текущей базы.
Индексы таблиц базы данных создаваемые платформой 1С
В данном разделе приведен список индексов таблиц базы данных, которые создаются системой 1С:Предприятие 8. Индексы таблиц создаются неявным образом при создании объектов конфигурации, а также при тех или иных настройках объектов конфигурации. Для тех случаев, когда создание индексов зависит от настроек объектов конфигурации приведены условия создания индексов.
В приведенных ниже таблицах имена индексных полей приведены так, как они описаны в разделе документации "Таблицы запросов".
Для измерений, реквизитов и т.д. применяются условные имена Измерение1, Реквизит1 и т.д.
Для общих реквизитов, являющихся разделителями в режиме "независимо", будем использовать имена ОРНР (ОРНР1, ОРНР2, и т.д.).
Для общих реквизитов, являющихся разделителями в режиме "независимо и совместно", будем использовать имена ОРСР.
Если режим разделения не имеет значения, то для общих реквизитов, являющихся разделителями, будем использовать имена ОРР.
Если в конфигурации определены разделители, то в индексы может входит поле, которое содержит значение хэш-функции набора значений разделителей. Такое поле будем обозначать именем ОРРХ.
Те индексные поля, которые не являются обязательными приведены в квадратных скобках, а если в индексе присутствует набор однотипных полей, это описывается многоточием, например: Реквизит + Измерение1 + [Измерение2 +...].
Данным материалом следует руководствоваться при написании текстов запросов с целью оптимизации времени их исполнения.
Справочник
Основные индексы
Дополнительные индексы для подчиненного справочника (вне зависимости от иерархичности справочника)
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Владелец + Ссылка |
Свойство "Длина кода" равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Код + Ссылка |
Свойство "Длина кода" не равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Наименование + Ссылка |
Свойство "Длина наименования" не равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Владелец + Реквизит + Код + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина кода" не равно 0, а свойство "Основное представление" равно "В виде кода". |
[ОРРХ | ОРНР1 +] Владелец + Реквизит + Наименование + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина наименования" не равно 0, а свойство "основное представление" равно "В виде наименования". |
Дополнительные индексы для иерархического неподчиненного справочника
Если для справочника установлено свойство "Размещать группы сверху", то в индексах, наряду с полем Родитель, участвует поле ЭтоГруппа. Состав индексов соответствует приведенной ниже таблице.
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Ссылка |
Свойство "Длина кода" равно 0 и свойство "Длина наименования" равно 0. |
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Код + Ссылка |
Свойство "Длина кода" не равно 0. |
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Наименование + Ссылка |
Свойство "Длина наименования" не равно 0. |
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Реквизит + Код + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина кода" не равно 0, а свойство "Основное представление" равно "В виде кода". |
[ОРРХ | ОРНР1 +] Родитель + ЭтоГруппа + Реквизит + Наименование + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина наименования" не равно 0, а свойство "основное представление" равно "В виде наименования". |
Для справочников без размещения групп сверху состав индексов соответствует приведенной выше таблице, но в индексы при этом не включено поле ЭтоГруппа.
Дополнительные индексы для иерархического подчиненного справочника
Если для справочника установлено свойство "Размещать группы сверху", то в индексах, наряду с полем Родитель, участвует поле ЭтоГруппа. Состав индексов соответствует приведенной ниже таблице.
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Ссылка |
Свойство "Длина кода" равно 0 и свойство "Длина наименования" равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Код + Ссылка |
Свойство "Длина кода" не равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Наименование + Ссылка |
Свойство "Длина наименования" не равно 0. |
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Реквизит + Код + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина кода" не равно 0, а свойство "Основное представление" равно "В виде кода". |
[ОРРХ | ОРНР1 +] Владелец + Родитель + ЭтоГруппа + Реквизит + Наименование + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина наименования" не равно 0, а свойство "основное представление" равно "В виде наименования". |
Для справочников без размещения групп сверху состав индексов соответствует приведенной выше таблице, но в индексы при этом не включено поле ЭтоГруппа.
Таблица опций справочника
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор (Кластерный) |
Всегда. |
Документ
Индекс |
Условие |
---|---|
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Дата + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Номер + Ссылка |
Свойство "Длина номера" не равно 0. |
[ОРРХ | ОРНР1 +] Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Дата + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием". |
[ОРРХ | ОРНР1 +] Реквизит |
Документ включен в критерий отбора через реквизит "Реквизит". |
[ОРРХ | ОРНР1 +] ПрефиксНомера + Номер + Ссылка |
Свойство "Длина номера" не равно 0. |
Журнал документов
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Дата + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Графа + Ссылка |
Для графы журнала "Графа" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Графа + Дата + Ссылка |
Для графы журнала "Графа" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием". |
План видов характеристик
См. описание индексов справочника с той лишь поправкой, что длина кода и длина наименования плана видов характеристик не может быть равной нулю и, кроме того, план видов характеристик не может быть подчиненным.
Таблица опций плана видов характеристик
Индекс |
Условие |
---|---|
Идентификатор |
Всегда. |
План счетов
Индекс |
Условие |
---|---|
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Код + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Родитель + Код + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Наименование + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Родитель + Наименование + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Порядок + Ссылка |
Свойство "Длина порядка" не равно 0. |
[ОРРХ | ОРНР1 +] Родитель + Порядок + Ссылка |
Свойство "Длина порядка" не равно 0. |
[ОРРХ | ОРНР1 +] Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Родитель + Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Порядок + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" не равно 0. |
[ОРРХ | ОРНР1 +] Родитель + Реквизит + Порядок + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" не равно 0. |
[ОРРХ | ОРНР1 +] Реквизит + Код + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" равно 0, а свойство "Основное представление" - "В виде кода". |
[ОРРХ | ОРНР1 +] Родитель + Реквизит + Код + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" равно 0, а свойство "Основное представление" - "В виде кода". |
[ОРРХ | ОРНР1 +] Реквизит + Наименование + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" равно 0, а свойство "Основное представление" - "В виде наименования". |
[ОРРХ | ОРНР1 +] Родитель + Реквизит + Наименование + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием" и при этом свойство "Длина порядка" равно 0, а свойство "Основное представление" - "В виде наименования". |
[ОРРХ | ОРНР1 +] Реквизит |
План счетов включен в критерий отбора через реквизит "Реквизит". |
[ОРРХ | ОРНР1 +] PredefinedID |
Индекс по идентификатору предопределенного объекта метаданных. |
Таблица опций плана счетов
Индекс |
Условие |
---|---|
Идентификатор |
Всегда. |
План видов расчета
См. описание основных индексов справочника.
Таблица опций плана видов расчета
Индекс |
Условие |
---|---|
Идентификатор |
Всегда. |
План обмена
См. описание основных индексов справочника с той лишь поправкой, что длина кода и длина наименования плана обмена не может быть равной нулю.
Табличная часть
Индекс |
Условие |
---|---|
[ОРНР1 + ... +] Ссылка + Ключ (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Реквизит + Ссылка |
Объект конфигурации включен в критерий отбора через реквизит "Реквизит" табличной части или для реквизита табличной части установлено свойство "Индексировать". |
[ОРРХ | ОРНР1 +] PredefinedID |
Индекс по идентификатору предопределенного объекта метаданных. |
Для всех таблиц, которые предоставляют доступ к табличным частям объектов.
Регистр сведений
Непериодический регистр сведений
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 +...] (Кластерный) |
Есть хоть одно измерение регистра. |
[ОРРХ | ОРНР1 +] ИзмерениеN + Измерение1 + [Измерение2 +...] |
Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не первое и не единственное измерение. |
[ОРРХ | ОРНР1 +] Реквизит + Измерение1 + [Измерение2 +...] |
Реквизиту "Реквизит" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Ресурс + Измерение1 + [Измерение2 +...] |
Ресурсу "Ресурс" задано свойство "Индексировать". |
Периодический регистр сведений
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Период + [Измерение1 + ...] |
Всегда. |
[ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 +...] + Период (Кластерный) |
Есть хоть одно измерение регистра. |
[ОРРХ | ОРНР1 +] ИзмерениеN + Период + Измерение1 + [Измерение2 +...] |
Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не единственное измерение. |
[ОРРХ | ОРНР1 +] Реквизит + Период + [Измерение1 + ...] |
Реквизиту "Реквизит" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Ресурс + Период + [Измерение1 + ...] |
Ресурсу "Ресурс" задано свойство "Индексировать". |
Дополнительный индекс для регистра сведений, подчиненного регистратору
Индекс |
Условие и описание |
---|---|
[ОРНР1 + ... +] Регистратор + НомерСтроки (Кластерный) |
Всегда. |
Регистр сведений с периодичностью "По позиции регистратора"
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Период + Регистратор + НомерСтроки |
Всегда. |
[ОРНР1 + ... +] Регистратор + НомерСтроки |
Всегда. |
[ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 + ...] + Период + Регистратор + НомерСтроки (Кластерный) |
Есть хоть одно измерение регистра. |
[ОРРХ | ОРНР1 +] Измерение + Период + Регистратор + НомерСтроки |
Измерению "Измерение" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Период + Регистратор + НомерСтроки |
Реквизиту "Реквизит" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Ресурс + Период + Регистратор + НомерСтроки |
Ресурсу "Ресурс" задано свойство "Индексировать". |
ИтогиСрезПервых
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 + ...] |
Есть хоть одно измерение регистра. |
[ОРРХ | ОРНР1 +] Реквизит + [Измерение1 + ...] |
Реквизиту "Реквизит" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Ресурс + [Измерение1 + ...] |
Ресурсу "Ресурс" задано свойство "Индексировать". |
ИтогиСрезПоследних
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 + ...] |
Есть хоть одно измерение регистра. |
[ОРРХ | ОРНР1 +] Реквизит + [Измерение1 + ...] |
Реквизиту "Реквизит" задано свойство "Индексировать" |
[ОРРХ | ОРНР1 +] Ресурс + [Измерение1 + ...] |
Ресурсу "Ресурс" задано свойство "Индексировать" |
Регистр накопления
Основная таблица регистра
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Регистратор + НомерСтроки (Кластерный) |
Всегда. |
[ОРНР1 + ... +] Регистратор + НомерСтроки |
Всегда. |
[ОРРХ | ОРНР1 +] Измерение + Период + Регистратор + НомерСтроки |
Измерению "Измерение" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Период + Регистратор + НомерСтроки |
Реквизиту "Реквизит" задано свойство "Индексировать". |
Таблица остатков
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN + [DimHash] + [Splitter] (Кластерный) |
Для регистров вида "Остатки". |
[ОРРХ | ОРНР1 +] Период + Измерение |
Измерению "Измерение" задано свойство "Индексировать"(начиная со второго измерения). |
Таблица оборотов
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN + [DimHash] + [Splitter] (Кластерный) |
Для регистров вида "Обороты". |
[ОРРХ | ОРНР1 +] Период + Измерение |
Измерению "Измерение" задано свойство "Индексировать".(начиная со второго измерения). |
Период + DimHash |
Для регистров, где количество измерений не позволяет организовать уникальный индекс по измерениям |
Таблица опций регистра накопления
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор (Кластерный) |
Всегда. |
Агрегаты регистра накопления
Таблица агрегатов
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN (Кластерный) |
Всегда. |
Таблица статистики регистра накопления
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор + Период + Splitter (Кластерный) |
Всегда. |
Карта используемых измерений |
Всегда |
Таблица опций сети агрегатов
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор (Кластерный) |
Всегда. |
Таблица буфера новых оборотов регистра накопления
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN (Кластерный) |
Всегда. |
Таблица новых оборотов регистра накопления
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN (Кластерный) + Splitter |
Всегда. |
Таблица кодов измерений регистра накопления
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период + UUID измерения 1 + ... + UUID измеренияN (Кластерный) |
Всегда. |
Таблица сети агрегатов
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор + UUID измерения 1 + ... + UUID измеренияN (Кластерный) |
Всегда. |
Регистр бухгалтерии
Основная таблица регистра без корреспонденции
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Период + Регистратор + НомерСтроки (Кластерный) |
Всегда. |
[ОРНР1 + ... +] Регистратор + НомерСтроки |
Всегда. |
[ОРРХ | ОРНР1 +] Счет + Период + Регистратор |
Регистру назначен план счетов. |
[ОРРХ | ОРНР1 +] Измерение + Период + Регистратор + НомерСтроки |
Измерению "Измерение" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Период + Регистратор + НомерСтроки |
Реквизиту "Реквизит" задано свойство "Индексировать". |
Основная таблица регистра с корреспонденцией
От вышеприведенного состава индексов отличается лишь тем, что вместо индекса по счету создаются два индекса по счету дебета и счету кредита.
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] СчетДт + Период + Регистратор |
Регистру назначен план счетов. |
[ОРРХ | ОРНР1 +] СчетКт + Период + Регистратор |
Регистру назначен план счетов. |
Таблица итогов по счету
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Период |
|
Таблица итогов между счетами
Только для регистров, поддерживающих корреспонденцию
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] |
|
Таблица со значениями субконто
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Регистратор + НомерСтроки + Корреспонденция |
Всегда. |
[ОРРХ | ОРНР1 +] Период + Регистратор + НомерСтроки + ВидСубконто + Корреспонденция (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] ВидСубконто + Значение |
Всегда. |
Таблица опций регистра бухгалтерии
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор (Кластерный) |
Всегда. |
Регистр расчета
Основная таблица регистра расчета
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] ПериодРегистрации + Регистратор + НомерСтроки |
Всегда. |
[ОРНР1 + ... +] Регистратор + НомерСтроки |
Всегда. |
[ОРРХ | ОРНР1 +] ПериодРегистрации + [БазовоеИзмерение1 +...] |
Всегда. |
[ОРРХ | ОРНР1 +] [БазовоеИзмерение1 +...] + ПериодРегистрации |
Есть хоть одно базовое измерение. |
[ОРРХ | ОРНР1 +] ПериодДействия + [БазовоеИзмерение1 +...] |
Установлено свойство регистра расчета "ПериодДействия". |
[ОРРХ | ОРНР1 +] [БазовоеИзмерение1 +...] + ПериодДействия |
Установлено свойство регистра расчета "ПериодДействия" и есть хоть одно базовое измерение. |
[ОРРХ | ОРНР1 +] Измерение + ПериодРегистрации + Регистратор + НомерСтроки |
Измерению "Измерение" задано свойство "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + ПериодРегистрации + Регистратор + НомерСтроки |
Реквизиту "Реквизит" задано свойство "Индексировать". |
Таблица перерасчета
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Регистратор + ВидРасчета + [Измерение1 + ...] |
Всегда. |
Tаблица фактических периодов действия
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Регистратор + НомерСтроки |
Всегда. |
Таблица опций регистра расчета
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор (Кластерный) |
Всегда. |
Последовательности
Основная таблица последовательности
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Регистратор |
Всегда. |
[ОРРХ | ОРНР1 +] [Измерение1 + ...] + Период + Регистратор |
Всегда. |
Таблица границ последовательности
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] [Измерение1 + ...] + Период + Регистратор |
Всегда. |
Перечисления
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Порядок + Ссылка |
Всегда. |
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
Бизнес-процессы
Основная таблица бизнес-процесса
Индекс |
Условие |
---|---|
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Дата + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Номер + Ссылка |
Свойство "Длина номера" не равно 0. |
[ОРРХ | ОРНР1 +] Завершен + Дата + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Стартован + Дата + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] ВедущаяЗадача + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Дата + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием". |
[ОРРХ | ОРНР1 +] Реквизит |
Бизнес-процесс включен в критерий отбора через реквизит "Реквизит". |
Таблица точек маршрута бизнес-процесса
Индекс |
Условие и описание |
---|---|
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Порядок + Ссылка |
Всегда. |
Задачи
Индекс |
Условие |
---|---|
[ОРНР1 + ... +] Ссылка (Кластерный) |
Всегда. |
[ОРРХ | ОРНР1 +] Дата + Ссылка |
Всегда. |
[ОРРХ | ОРНР1 +] Номер + Ссылка |
Свойство "Длина номера" не равно 0. |
[ОРРХ | ОРНР1 +] Наименование + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Выполнена + Наименование + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Выполнена + Дата + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] БизнесПроцесс + ТочкаМаршрута + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Выполнена + БизнесПроцесс + ТочкаМаршрута + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] БизнесПроцесс + Дата + Ссылка |
Всегда |
[ОРРХ | ОРНР1 +] Реквизит + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать". |
[ОРРХ | ОРНР1 +] Реквизит + Дата + Ссылка |
Для реквизита "Реквизит" свойство "Индексировать" установлено в значение "Индексировать с доп. упорядочиванием". |
[ОРРХ | ОРНР1 +] Реквизит |
Задача включена в критерий отбора через реквизит "Реквизит". |
Сервисы интеграции
Таблица настроек сервиса интеграции
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] (Кластерный) |
Всегда. |
Таблица очереди отправки канала сервиса интеграции
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор сообщения (Кластерный) |
Всегда. |
Позиция сообщения |
Всегда. |
Таблица очереди получения канала сервиса интеграции
Индекс |
Условие |
---|---|
[ОРРХ | ОРНР1 +] Идентификатор сообщения (Кластерный) |
Всегда. |
Позиция сообщения |
Всегда. |
Таблицы регистрации изменений
Таблицы регистрации изменений для различных объектов метаданных отличаются только составом и типами полей ключа данных - набора полей, однозначно определяющих данные. Для объектных типов данных (Справочник, Документ, ПланСчетов и др.) - это "Ссылка"; для регистров, подчиненных регистратору (РегистрНакопления, РегистрБухгалтерии, РегистрСведений, подчиненный регистратору и др.) - "Регистратор"; для регистров сведений, неподчиненных регистратору - поля, соответствующие изменениям, входящим в основной отбор регистра; для констант - идентификатор объекта метаданных Константы.
Индекс |
Условие и описание |
---|---|
[ОРРХ | ОРНР1 +] Узел + Номер сообщения + Ключ данных |
Всегда. |
[ОРРХ | ОРНР1 +] Ключ данных + Узел + Номер сообщения |
Всегда. |
Таблица списка пользователей
Индекс |
Условие и описание |
---|---|
Уникальный идентификатор пользователя (Кластерный) |
Всегда. |
Идентификатор набора ролей |
Всегда. |
Имя пользователя ОС |
Всегда. |
[ОРРХ +] Имя пользователя ОС |
В конфигурации определен хотя бы один разделитель. |
Имя пользователя |
Всегда. |
[ОРРХ +] Имя пользователя |
В конфигурации определен хотя бы один разделитель. |
[ОРРХ +] Полное имя пользователя |
Всегда. |
Показывать пользователя в списке для диалога аутентификации |
Всегда. |
Разрешена аутентификация средствами 1С:Предприятия |
Всегда. |
Таблица истории работы пользователей
Индекс |
Условие и описание |
---|---|
[ОРРХ +] Уникальный идентификатор записи |
Всегда. |
[ОРРХ +] Уникальный идентификатор пользователя + Дата время |
Всегда. |
[ОРРХ +] Уникальный идентификатор пользователя + Хеш по URL |
Всегда. |
ОРРХ + ИспользованиеРазделителя1 + ... |
В конфигурации определен хотя бы один разделитель. |
Таблица хранилища системных настроек
Таблица хранилища настроек отчетов
Таблица хранилища настроек вариантов отчетов
Таблица хранилища общих настроек
Таблица хранилища настроек данных форм
Таблица хранилища динамических списков
Хранилище настроек стандартного интерфейса OData
Индекс |
Условие и описание |
---|---|
[ОРРХ +] Уникальный идентификатор пользователя + Имя предмета настройки + Имя множественной (именованной) настройки |
Всегда. |
ОРРХ + ИспользованиеРазделителя1 + ... |
В конфигурации определен хотя бы один разделитель. |
Таблица очереди истории данных
Индекс |
Условие и описание |
---|---|
Идентификатор объекта метаданных + Идентификатор данных + Позиция сообщения в очереди (Кластерный) |
Всегда. |
Таблица версий данных истории данных
Индекс |
Условие и описание |
---|---|
Идентификатор данных + Номер версии данных (Кластерный) |
Всегда. |
Таблицы последних версий истории данных
Индекс |
Условие и описание |
---|---|
[ОРР1 + … + ] + Идентификатор объекта метаданных + Идентификатор данных (Кластерный) |
Всегда. |
Таблица версий метаданных истории данных
Индекс |
Условие и описание |
---|---|
[ОРНР1 + … + ] + Идентификатор объекта метаданных + Флаг версия метаданных сформирована при изменении настроек + Флаг версия метаданных является актуальной + Номер актуальной версии метаданных (Кластерный) |
Всегда. |
Идентификатор объекта метаданных + Номер актуальной версии метаданных |
Всегда. |
Таблица настроек истории данных
Индекс |
Условие и описание |
---|---|
[ОРНР1 + … + ] + Идентификатор объекта метаданных (Кластерный) |
Всегда. |
Таблица очереди обработки после записи версии истории данных
Индекс |
Условие и описание |
---|---|
[ОРР1 + … + ] + Идентификатор объекта метаданных + Идентификатор данных + Номер версии (Кластерный) |
Всегда. |
Копии базы данных
Таблица копий
Индекс |
Условие |
---|---|
Идентификатор копии + Имя копии (Кластерный) |
Всегда. |
Таблица настроек копий
Индекс |
Условие и описание |
---|---|
Идентификатор копии (Кластерный) |
Всегда. |
Таблица состояний таблиц копий
Индекс |
Условие и описание |
---|---|
Идентификатор копии + Имя таблицы (Кластерный) |
Всегда. |
Таблица изменений в процессе первоначального копирования
Индекс |
Условие и описание |
---|---|
Идентификатор копии + Имя таблицы (Кластерный) |
Всегда. |
Таблица объектов изменений
Индекс |
Условие и описание |
---|---|
Идентификатор объекта (Кластерный) |
Всегда. |
Таблица с информацией по блокам первоначального копирования
Индекс |
Условие и описание |
---|---|
Идентификатор копии + Имя таблицы + Номер блока (Кластерный) |
Всегда. |
Таблица журналов транзакций
Индекс |
Условие и описание |
---|---|
Номер транзакции (Кластерный) |
Всегда. |
Идентификатор транзакции |
Всегда. |
Таблица с измененными в транзакциях таблицах
Индекс |
Условие и описание |
---|---|
Номер транзакции + Имя таблицы (Кластерный) |
Всегда. |
Имя таблицы |
Всегда. |
Таблица перенесенных транзакций
Индекс |
Условие и описание |
---|---|
Идентификатор копии + Номер транзакции (Кластерный) |
Всегда. |