Category: финансы

Category was added automatically. Read all entries about "финансы".

spaghetti

Ограничение числа субконто в регистре бухгалтерии и производительность

1С в книге "Профессиональная разработка в 1С:Предприятие 8.0" на странице 307 в разделе "Количество полей в индексе" утверждает, что "SQL Server имеет ограничение на количество полей в индексе, равное 16.
Поиск по полям, учатсвующим в индексе, осуществляется системой быстро. В случае если есть поля, которые должны участвовать в индексе (измерения, значения субконто), но не были включены в него по причине ограничения длины, система сможет быстро получить выборку, включающую в себя поля, участвующие в индексе и все сочетания полей в индекс не вошедших.
Полученная выборка будет обрабатываться построчно с целью поиска нужной строки итогов".

Смотрим сведения от Microsoft:

http://technet.microsoft.com/en-us/library/ms143432.aspx
Масимальное число колонок в индексе MS SQL 2005

Columns per index key 16
Columns per foreign key 16
Columns per primary key 16

Пример таблицы с субконто и ее индекса для таблицы итогов регистра бухгалтерии :

№ Поле Комментарий
1 Период
2 Счет Счет плана счетов
3 Организация Измерение 1
4 Валюта Измерение 2
5 Субконто1 Тип Фактический тип значения поля составного типа
6 Субконто1 Таблица Тип ссылки
7 Субконто1 Запись Значение ссылки
8 Субконто2 Тип
9 Субконто2 Таблица
10 Субконто2 Запись

Максимум в индекс попадает 4 субконто.
При 5 субконто SQL начинает делать scan таблицы, так как 5 субконто в индекс не попало и данные ищутся перебором.

Дополнительные ограничения на число полей в индексе может оказать включение в субконто примитивных типов (число, дата, строка, булево).
Для каждого примитивного типа в субконто добавляется отдельное поле, включающееся в индекс.
Субконто ссылочных типов в таблице представляется в виде трех полей:
тип, таблица, запись.

Добавим все четыре примитивных типа в субконто - это приведет к тому, что для каждого субконто будет создаваться 7 полей: тип, таблица, запись и 4 поля примитивных типов.
В этом случае в индекс включаются: период, счет, измерения регистра,
Субконто1 (7 полей).

№ Поле Комментарий
1 Период
2 Счет Счет плана счетов
3 Организация Измерение 1
4 Валюта Измерение 2
5 Субконто1 Тип Фактический тип значения поля составного типа
6 Субконто1 Таблица Тип ссылки
7 Субконто1 Запись Значение ссылки
8 Субконто1 Число
9 Субконто1 Строка
10 Субконто1 Дата
11 Субконто1 Булево

Субконто2 полностью в индекс уже не помещается.

Поэтому 1С настоятельно не рекомендует использовать примитивные типы в качестве значений субконто. Также следует обратить внимание на ограничение числа субконто примерно 4 - это зависит от количества измерений в регистре бухгалтерии и от состава типов субконто.