|
Запрос Регистр сведений. Какой отбор быстрее? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
MrAvPika
12.09.19
✎
17:41
|
Отбор по измерению (ссылка на справочник) ИЛИ отбор по индексированному реквизиту число (длина 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) Да без разницы, что во внешней системе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |