#0
by fisher
На примере конкретной ситуации. Допустим, есть оборотный регистр "ПланПродаж" Измерения: Сценарий, Подразделение, Контрагент, Номенклатура. Как определить для него сабж? Допустим, что сценариев парочка, а подразделений - пяток. Контрагентов и ассортимента - много. Примерно сопоставимое количество. Очевидно вроде, что первым измерением должно стоять достаточно селективное и при этом часто используемое в соединениях. На эту роль хорошо подходит Контрагент или Номенклатура. Правильно? Тогда по каким измерениям имеет смысл установить признак дополнительного индексирования? Очевидно, что сценарии и подразделения тоже будут постоянно использоваться в соединениях и отборах, но их селективность невелика. Т.е. вроде большого смысла создавать по ним доп-индекс нет. Правильно? Но возможно имеет смысл установить доп-индексирование по номенклатуре, если первым измерением - контрагент. Или нет? В общем, просьба гуру оптимизации производительности навести ясность.
#1
by fisher
Пока имхается, что выгоднее всего просто установить первым измерением контрагента, а вторым - номенклатуру. Чаще всего они используются в соединениях в паре, но контрагент чаще используется в отборах. В то время, как отбор по номенклатуре используется сравнительно редко. Доп-индексы вроде нет смысла создавать в этой ситуации. Ммм?
#4
by y22-k
Есть же обработки на скуле показывающие рекомендуемые к созданию индексы запусти статстику на неделю и посмотри
#5
by fisher
Такое впечатление, что никто никогда в похожих ситуациях не делал никаких замеров, не смотрел на статистику и не делал никаких выводов. Все советуют как бы они поступили в первый раз в первый класс.
#6
by Maxus43
те, кто это делал - готовый рецепт тебе не дадут тоже. Такой опыт стоит денег, тебе же лень всё это замерять? а им лень это отдавать. И не факт что ситуация такая же, зависит от конкретики много
#15
by fisher
Не совсем понял. В смысле, от меньшей селективности к большей? Сценарий-Подразделение-Контрагент-Номенклатура?
#18
by MadHead
я устанавливаю порядок по частоте использования фильтров/соединений. Сценарий, Подразделение, Контрагент, Номенклатура Без отбора по сценарию вряд ли будут использоваться данные регистра. - это первое измерение. И так далее. Если часто используется отбор по контрагенту и при этому по предыдущим измерениям отбора нет, то можно дополнительно проиндексировать контрагента
#19
by fisher
Селективность индекса - не менее важная характеристика, чем частота его использования. Взять данные по некластерному индексу - довольно дорогостоящая операция (а в постгри, например, нет полного аналога кластерному индексу MSSQL, насколько я понял). Поэтому оптимизатор не использует такие индексы, т.к. дешевле выходит тупой перебор. Если сценария всего два (или вообще один) - то селективность такого индекса будет хуже не придумаешь.
#21
by fisher
Кстати, интересный вопрос. К примеру, есть стандартный индекс Период+Сценарий+Контрагент+Номенклатура. А в запросе по периоду и сценарию отбор, а по контрагенту и номенклатуре - соединение. Будет ли при соединении с высокой вероятностью использован этот индекс при актуальной статистике и т.п.? Ну, это можно будет и потестить, если готового ответа нет... Вот тоже смутно такое припоминал еще по 8.1 Но найти не могу.
#22
by fisher
Не, соврал. Вроде есть у postgresql кластерные индексы. Но итогах регистров накоплений они в 1С не используются. Видать шибко ресурсоемкая штука.
#23
by fisher
Да и вообще, смотрю, индексы по измерениям 1С только в итогах строит. Т.е. если есть частые оперативные выборки за несколько дней месяца, а данных много - то может иметь смысл даже по первому измерению доп-индекс создавать.
#24
by Hmster
немного оптимизировал УТ10 на постгре. был большой косяк с рлс - около 150-200 групп доступа, у каждого менеджера штук по 20-30 групп как минимум было. поставил индексы в РС прав доступа и в таблицах по соединяемым полям. после этого бд стала шевелиться. на отчеты как правило можно забить, более важна логика программы, какие там соединения задействованы. порядок на производительность не мерял, но не думаю что будет ощутимый прирост
#25
by MadHead
про постгри нечего сказать не могу. Селективность важная характеристика безусловно и если сценарий будет иметь низкую селективность, то скорее всего при отборе только по сценарию индекс не будет использован. Но с подходом из запросы по максимуму будут использовать кластерный индекс который строится по умолчанию (ведь чаще всего отборов будет больше).
#26
by MadHead
скользкий конечно вопрос. На мой взгляд лучше уж создать агрегат или инклуд индекс средствами sql
#27
by samozvanec
очень интересный вопрос. я раньше всегда делал как в и , но потом почитал вот тут: и теперь хз. на эксперименты времени нет пока
#28
by fisher
Ну, что касательно типовых, то я неоднократно встречал рассказы о том, что сабж был причиной вынесения поля "Номенклатура" в регистре партий на первое место (перед складом).
#29
by Maxus43
в остальных регистрах зато номенклатура обычно в конце-середине... по типовым вобще сложно судить
#30
by fisher
Остальные, как правило, были "полегче". Там типа особого смысла не было оптимизировать.
#31
by fisher
Вообще, касательно 1С - особой необходимости в оптимизации производительности вообще не возникает на таблицах относительно небольших объемов, как я понимаю. Обычно с головой хватает скана по кластерному индексу по периоду, поэтому одинэсовцы и не заморачивались.
#32
by Maxus43
ну поди знай... РС вспомнить ЗУПовский если ГрафикиРаботПоВидамВремени - надо было оптимизировать... Там ещё в добавок стоят на всех измерениях "ОсновнойОтбор", нихрена не проиндексировано дополнительно и т.д.
#33
by fisher
Дополнительно индексировать - тоже надо очень осторожно, особенно на больших таблицах. База пухнет, запись замедляется. А реальный прирост на выборках далеко не всегда можно получить.
#36
by fisher
Для меня стало новостью, что использование в условиях по периоду функций НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА может привести к неэффективному выполнению запроса. Что-то я подобного не замечал...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- 8.0: вопрос 1С:Проф-л: На что влияет порядок измерений регистра?
- порядок измерений регистров
- Отбор по реквизиту регистра в наборе записей регистра накопления
- отчет по данным регистра накопления и регистра бухгалтерии
- Как получить имя регистра сведений из формы записи этого же регистра?
- В чем отличие регистра накопления от регистра сведения
- Порядок измерений в регистре накопления
- Порядок измерений регистра - оптимизация расчетов
- Как связать период Регистра накопления и Регистра сведений во внутреннем запросе
- Самый оптимальный способ сформировать из ТЗ другие ТЗ по контрольному столбцу
- Порядок выгрузки объектов при обмене УТ-БП, порядок проведения документов
- Задача написать оптимальный алгоритм преобразования частоты
В этой группе 1С
- 1c8 УТ Найти счет по Номенклатуре
- Как из отчета 1с скопировать данные с группировками и вставить в ексель без груп
- Как программно из обработки выполнить нажатие кнопки документа?
- После пометки на удаление реализации, остаются проводки в бп 2.0
- внезапно перестала уходить почта с яндекс ящиков
- ЗУП, Штатное расписание по текущей расстановке.Можно ли откатить ?
- Есть две базы РИБ, как определить какая из них главная?
- server_addr=tcp://[ИмяСервера]:1562 descr=Ошибка сетевого доступа к серверу (Wi
- зависает при обновлении конфигурации
- ЗУП Поменять физическое лицо у сотрудника
- Регламентные задания и инициализация глобальных переменных
- ошибка: Табличная часть объекта содержит более 99999 строк
- Ошибка при проведении документа Отражение зарплаты в регламентированном учете
- Проблема с V83.Application
- Конвертация данных - проставить "автоматически генерировать номер" всем докам
- v7: Реквизит диалога "Список" как реквизит документа.
- Отбор в динамическом списке по реквизиту табличной части
- Расчет себестоимости сторнирует незавершенное производство
- 1с 8.3 Объект выбора папки в форме
- Не выполняются планы обслуживания