Имя: Пароль:
1C
 
Запрос Регистр сведений. Какой отбор быстрее?
, , ,
0 MrAvPika
 
12.09.19
17:41
1. Отбор по измерению (ссылка на справочник) 0% (0)
2. Отбор по индексированному реквизиту число (длина 6 0% (0)
Всего мнений: 0

Отбор по измерению (ссылка на справочник) ИЛИ отбор по индексированному реквизиту число (длина 6)?

У меня есть код товара, могу по нему получить ссылку, а потом поискать по ссылке-измерению
либо поискать по коду в регистре

Что быстрее, если пренебречь получением ссылки по коду?
1 palsergeich
 
12.09.19
17:44
(0) завистит не только от того на какие поля отбор, но и какие поля выбираются.
На ИТС посмотри какие индексы у РС есть, если все поля будут в индексе без пробелов и первый - это отбор - лучше не придумаешь.
Какого типа это не важно.
Другое дело что у оптимизатора могут быть свои предпочтения и он забьет на это и отсканирует таблицу)
2 fisher
 
12.09.19
17:45
Зависит от того, какие поля и сколько строк выбираешь.
Но в общем случае, если кво строк невелико, а измерение первое - то приблизительно монопенисуально.
3 Лефмихалыч
 
12.09.19
17:51
У РС не бывает индексов отдельно по реквизитам. Индексированный реквизит создает индекс, в котором сначала идет реквизит, а мотом все изменения.

Соответственно, в твоем случае индексированный реквизит никакого прироста производительности не дамт, а только раздует базу бесполезными дублями данных в индексах.
4 palsergeich
 
12.09.19
17:53
(3) Даст, если индекс будет покрывающий.
Например если ему надо реквизит + измерение1
5 fisher
 
12.09.19
17:54
(3) Слишком смелое утверждение. Ты же не знаешь всех его кейсов.
6 Лефмихалыч
 
12.09.19
17:56
(5) (4) зачем вы изобретаете там, где всё понятно?
Автор чотка написал "у меня при любом раскладе одно и то же значение И в реквизите, И в измерении". А еще там чотка написано, что отбор будет ТОЛЬКО по одному значению, а не по комбинации.
7 palsergeich
 
12.09.19
17:58
(6) Мы не изобретаем, а выше написали, что важен не только отбор, но и состав выходных полей.
8 fisher
 
12.09.19
18:00
(6) Тогда нафига вообще реквизит?
9 palsergeich
 
12.09.19
18:01
(8) потому что могу, это же очевидно)
10 Лефмихалыч
 
12.09.19
18:03
(7) кластерные индексы создаются только по измерениям. Соответственно, индекс по реквизиту не даст таки прироста даже, если в выборке будет реквизит + измерение 1 - за значением изменения 1 все равно в таблицу лезть.
(8) в данной задаче я в душе не понимаю, зачем автор это сделал. Оверинжиниринг, видимо.
11 MrAvPika
 
12.09.19
18:13
(10) Так, давайте поясню.

Допустим есть таблица (РегистрСведений) Остатки

Измерения
Склад - ссылка
Товар - ссылка
Колво - ресурс
Цена - ресурс
КодСклада - реквизит
КодТовара - реквизит

По факту эта инфа отдается через внешнее соединение
и мне нужны коды товаров

Забирают остатки по отбору (может и отбор по двум полям "товар" и "склад")

Чтоб левым соединение не собирать коды их добавили в реквизиты.
И вот теперь хорошо бы понять, лучше отбирать по измерениям получая ссылки или отбирать по кодам (реквизитам)
12 MrAvPika
 
12.09.19
18:14
т.е. может быть вот такое:

ГДЕ
Склад в (списокскладов)
И Товар в (списоктоваров)
13 palsergeich
 
12.09.19
18:16
(10) все зависит от задачи
14 MrAvPika
 
12.09.19
18:18
Внешняя система забирает "посчитанные данные"

Может по одному складу, может по списку складов, так же может отобрать конкретный список товаров
15 Мимохожий Однако
 
13.09.19
07:32
Если во внешней системе хранятся ранее полученные ссылки, то и отбор делать по этим ссылкам. Тогда не нужны коды.
16 fisher
 
13.09.19
09:02
(11) > Чтоб левым соединение не собирать коды
И что, много выиграли? Попробуйте товар первым по порядку измерением поставить в списке измерений регистра.
17 fisher
 
13.09.19
09:09
На мой дилетантский взгляд, реквизиты с кодами справочников вы абсолютно зря добавляли.
(15) Да без разницы, что во внешней системе.