7.7 Порядок Измерений В Регистре Остатков

olga13

Well-known member
10.10.2008
208
0
#1
Добрый день. Хотелось бы узнать, имеет ли значение порядок измерений в регистре остатков? Какой вариант лучше:

Товар, Партия, СтрокаПартии, Склад
или
Склад, Товар, Партия, СтрокаПартии?
 

olga13

Well-known member
10.10.2008
208
0
#3
Я где-то читала, что первый вариант более правильный. При такой структуре регистра быстрее работают запросы. Вопрос, насколько быстрее. Стоит ли вносить такие глобальные изменения, или увеличение производительности будет настолько несущественным, что не стоит таких трудозатрат?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#4
Ольга13
Порядок измерений имеет очень большое значение. Первыми должны идти те, по которым чаще всего делается отбор. Например, если у вас мало товаров, но много складов, с которых вы можете отгружать эти товары, и задача стоит в выборе склада, то правильным будет ваш первый вариант. Если же у вас задача подбора товара по определенному складу, то предпочтительней будет ваш второй вариант.
 

olga13

Well-known member
10.10.2008
208
0
#5
Ольга13
Порядок измерений имеет очень большое значение. Первыми должны идти те, по которым чаще всего делается отбор. Например, если у вас мало товаров, но много складов, с которых вы можете отгружать эти товары, и задача стоит в выборе склада, то правильным будет ваш первый вариант. Если же у вас задача подбора товара по определенному складу, то предпочтительней будет ваш второй вариант.
Что-то вы меня еще больше запутали. Почему первый вариант, если чаще отбор идет по складам? Вы же сами пишете, что "Первыми должны идти те, по которым чаще всего делается отбор."?
 
H

Hryv

#6
Выбор<>отбор, даже наоборот
Выбор склада = отбор по товару
Выбор товара = отбор по складу
 

Allexei

Well-known member
02.05.2008
322
1
#8
//Описание для 8-и, думаю для 7- то же будет актуально

Вообще то порядок следования измерений регистра влияет на создание индексов. Как пример, есть у нас регистр у которого измерения идут в следующем порядке
*Склад
*Номенклатура
*Характеристика
Будет создан примерно следующий индекс - Склад+Номенклатура+Характеристика+Период+Регистратор. Так же возможны и другие индексы, все зависит от настроек регистра - но этот будет основным.
Теперь приведем пример запроса:
Если у нас будет запрос типа
Выбрать Склад, Номенклатура, Характеристика Из Регистр.Наш.Остатки(, Номенклатура, Характеристика) - в данном случае будет оптимальное выполнение запроса так ка нет отбора по первому полю(смотрим наш индекс). СУБД вынуждено будет просканировать всю таблицу регистра.
Второй вариант:
Выбрать Склад, Номенклатура, Характеристика Из Регистр.Наш.Остатки(, Склад, Характеристика) - аналогично первому, такого индекса у нас нет.Субд выполнит поиск по первому индексу (склад), а потом будет сканировать оставшиеся записи
Третий вариант
Выбрать Склад, Номенклатура, Характеристика Из Регистр.Наш.Остатки(, Номенклатура, Склад) - а вот этот запрос будет выполнен оптимально.Субд просканирует индекс по первому полю(склад), потом по второму и выплюнет нужные нам записис. следует обратить внимание что порядок следования условий значения не имеет.

Надеюсь ответил на Ваш вопрос B)
 

olga13

Well-known member
10.10.2008
208
0
#10
В продолжение темы о регистрах. Нужен совет, как лучше поступить.
Имеется регистр остатков "Остатки товаров на комиссии" со следующими измерениями:
Фирма, Комитент, Договор, Товар, Партия, СтрокаПартии.
Есть необходимость для документа "Отчет комиссионера" получать сведения о стране происхождения товара. Получить их можно из приходных документов.
Вопрос: что лучше - добавить в регистр измерение "Страна" либо крутить в цикле запрос, который из приходов будет вытаскивать нужные сведения?