Имя: Пароль:
1C
 
Имеется регистр накопления указанной структуры
0 tg30000
 
20.08.17
22:13
Имеется регистр накопления указанной структуры, требуется ответить на вопросы и обосновать

ТоварыНаСкладах(Измерения:склад, номенклатура,ХарактеристикаНоменклатуры,СерияНоменклатуры,Качество
Ресурсы:Количество, КоличествоЛ)


1)

ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, , ,
Номенклатура = &Номенклатура) КАК Товары


2)
ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, , ,
Номенклатура = &Номенклатура И Склад = &Склад) КАК Товары


3)

ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, , ,
Номенклатура = &Номенклатура И Качество = &Качество) КАК Товары



1)В чем отличие этих запросов с точки зрения производительности?
2)Как добиться оптимальности выполнения этих запросов?
3)Какова логика выполнения данных запросов в СУБД?
4)Какой регламент должен соблюдать администратор базы, чтобы подобные запросы выполнялись наиболее оптимально?
1 tg30000
 
20.08.17
22:14
Как вариант:
1) Нужно использовать максимально параметры виртуальных таблиц, сначала выбираются данные для виртуальных таблиц, а потом уже на них накладываются условия, соединения и т.д.
2) В случае, когда необходимо вывести лишь текстовое представление объекта нужно использовать функцию ПРЕДСТАВЛЕНИЕ(<Выражение>)
запрос в этом случае будет оптимальным, т.к. не будет создаваться дополнительная таблица.
2 tg30000
 
20.08.17
22:15
Коллеги, прошу советов или что можно почитать по этому поводу, особенно по вопросам 3 и 4.
3 МихаилМ
 
20.08.17
22:19
(2)почитайте свои институтские лекции .
4 МихаилМ
 
20.08.17
22:30
5 H A D G E H O G s
 
20.08.17
23:26
1) Все запросы, кроме 2 - "неоптимальны" в рамках очевидности, так как не будут использовать поиск по индексу.
2) Передвинуть номенклатуру на первое место в измерениях. Этого достаточно. Номенклатура обеспечит достаточную селективность выборки.
3) Логика простая. Кластерный индекс используется тогда, когда в полях поиска нет пропусков, начиная с первого поля-измерения.
4) Обновление статистики, сброс процедурного кэша и дефрагментация индексов.
6 H A D G E H O G s
 
20.08.17
23:28
Отряд не заметил
Потери бойца
И «Яблочко»-песню
Допел до конца.
Лишь по небу тихо
Сползла погодя
На бархат заката
Слезинка дождя...
7 Torquader
 
21.08.17
00:22
(5) А, может быть, поставить флаг "индексировать" у номенклатуры.
Просто, запросы "что у нас на складе" - это очень частое явление.
8 H A D G E H O G s
 
21.08.17
00:33
(7) Складов мало.
9 Torquader
 
21.08.17
01:21
(8) Понятно, что склад в конец.
Собственно, если мы выбираем всю номенклатуру какого-то склада, то это не сильно отличается от выбора вообще всей номенклатуры.
Но, если в базе несколько пользователей и фигачат по разным складам, то будет вопрос с блокировками, который легче решается, если склад в начале, почему его туда и помещают.
10 H A D G E H O G s
 
21.08.17
01:51
" то будет вопрос с блокировками, который легче решается, если склад в начале, почему его туда и помещают."

Ты не прав.

Какая разница, где находится склад при блокировках?
Тебе главное попасть в индекс - с номенклатурой впереди это можно сделать по кластерному индексу.
11 tg30000
 
21.08.17
04:57
Коллеги, огромное спасибо за ответы, буду работать в этом направлении и штудировать материалы по данным вопросам.