Почему с правами администратора запрос выполняется в разы быстрее
Обратил внимание, что у пользователей отчет работает в десятки раз медленнее чем у меня при разработке.
Выяснил, что запрос
с административными правами выполняется за 0.03 сек, а без административных (но с полными) за 2-3 сек.
Конфа ERP 2.4.11. Сервер на дебиане 1с 8.3.15.1700, постгрес 9.6. Подскажите какие могут быть причины?
Выяснил, что запрос
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
ЗакупкиОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК НоменклатураСырье,
ЗакупкиОбороты.КоличествоОборот КАК КоличествоОборот,
ЗакупкиОбороты.СуммаОборот КАК СуммаОборот,
ЗакупкиОбороты.СуммаБезНДСОборот КАК СуммаБезНДСОборот,
ЗакупкиОбороты.Регистратор КАК Регистратор
ИЗ
РегистрНакопления.Закупки.Обороты(, &конецПериода, Регистратор, АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура) КАК ЗакупкиОбороты
УПОРЯДОЧИТЬ ПО
ЗакупкиОбороты.Регистратор.Дата УБЫВ
Показатьс административными правами выполняется за 0.03 сек, а без административных (но с полными) за 2-3 сек.
Конфа ERP 2.4.11. Сервер на дебиане 1с 8.3.15.1700, постгрес 9.6. Подскажите какие могут быть причины?
По теме из базы знаний
- Руководство по SQL: Как лучше писать запросы (Часть 1)
- Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах
- Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия
- tempdb, почему она всё время растет?
- Начните уже использовать хранилище запросов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) РЛС "лезет" в отборы виртуальной таблицы с трешем "В Иерархии" посему и имеем то что имеем.
было бы логично, чтобы платформа да и разрабы умела работать со всеми отборами так как с сегментами в УТ.
Если посмотреть отчеты в УТ/ЕРП где есть работа с сегментами, то там в запросе первый пакет -
это СКД-шный отбор сегментов, например
да это рс, т.е. не иерархическая структура, но относительно этой таблицы пользователь может
наворотить чудо отборы "в группе из списка" - это великий тормоз всея 1С8.
но в такой реализации это пабрабану, так как этот тормоз живет исключительно в этом "легком"
пакете. И далее в "тяжелых" оборотных или аналитических таблицах уже не будет в отборах всяких чудовищ с
"В Иерархии", а будет быстрый отбор, например
Некоторые попсовые отчеты в УТ я переписал как внешние, спроецировав эту идею и на справочники номенклатуры, складов. Т.е. первым пакетами идут такие например,
и далее
и далее выборка из тяжелого регистра летает что с РЛС, что без него
пакеты с оборотами тоже быстрые, собственно для оборотов и делалось.
пример с остатками - просто пример.
базопузомером уточнил
ключей аналитики 2.5КК+
записей себс 125КК+
типовые отчеты без такого финта - дохлые клячи из-за отборов "по умолчанию"
если бы разрабы переписали отчеты примерно так или лучше, исправив и причесав этот костыль, то
пользователи типовых УТ/ЕРП стали бы не тонуть с воплем "Да ваша 1С дно", а ходить по воде с сиянием.
резкие образы исключительно для понимания, а не с целью оскорбить - ничего личного)
было бы логично, чтобы платформа да и разрабы умела работать со всеми отборами так как с сегментами в УТ.
Если посмотреть отчеты в УТ/ЕРП где есть работа с сегментами, то там в запросе первый пакет -
это СКД-шный отбор сегментов, например
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
Сегменты.Партнер КАК Партнер,
ИСТИНА КАК ИспользуетсяОтборПоСегментуПартнеров
ПОМЕСТИТЬ ОтборПоСегментуПартнеров
ИЗ
РегистрСведений.ПартнерыСегмента КАК Сегменты
{ГДЕ
Сегменты.Сегмент.* КАК СегментПартнеров,
Сегменты.Партнер.* КАК Партнер}
ИНДЕКСИРОВАТЬ ПО
Партнер
Показатьда это рс, т.е. не иерархическая структура, но относительно этой таблицы пользователь может
наворотить чудо отборы "в группе из списка" - это великий тормоз всея 1С8.
но в такой реализации это пабрабану, так как этот тормоз живет исключительно в этом "легком"
пакете. И далее в "тяжелых" оборотных или аналитических таблицах уже не будет в отборах всяких чудовищ с
"В Иерархии", а будет быстрый отбор, например
(Регистр.АналитикаУчетаПоПартнерам.Партнер В
(ВЫБРАТЬ
ОтборПоСегментуПартнеров.Партнер
ИЗ
ОтборПоСегментуПартнеров
ГДЕ
ОтборПоСегментуПартнеров.ИспользуетсяОтборПоСегментуПартнеров = &ИспользуетсяОтборПоСегментуПартнеров))}
ПоказатьНекоторые попсовые отчеты в УТ я переписал как внешние, спроецировав эту идею и на справочники номенклатуры, складов. Т.е. первым пакетами идут такие например,
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТаблСклады.Ссылка КАК СкладОтбора
ПОМЕСТИТЬ ВтСклады
{ВЫБРАТЬ
СкладОтбора.*}
ИЗ
Справочник.Склады КАК ТаблСклады
ГДЕ
НЕ ТаблСклады.ЭтоГруппа
{ГДЕ
ТаблСклады.Ссылка.* КАК СкладОтбора}
ИНДЕКСИРОВАТЬ ПО
СкладОтбора
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТаблТовары.Ссылка КАК ТоварОтбора,
ТаблТовары.Марка КАК МаркаОтбора,
ТаблТовары.Производитель КАК ПроизОтбора,
ТаблТовары.ТоварнаяКатегория КАК КатегОтбора
ПОМЕСТИТЬ ВтТовары
{ВЫБРАТЬ
ТоварОтбора.*,
МаркаОтбора.*,
ПроизОтбора.*,
КатегОтбора.*}
ИЗ
Справочник.Номенклатура КАК ТаблТовары
ГДЕ
НЕ ТаблТовары.ЭтоГруппа
{ГДЕ
ТаблТовары.Ссылка.* КАК ТоварОтбора,
ТаблТовары.Марка.* КАК МаркаОтбора,
ТаблТовары.Производитель.* КАК ПроизОтбора,
ТаблТовары.ТоварнаяКатегория.* КАК КатегОтбора}
ИНДЕКСИРОВАТЬ ПО
ТоварОтбора
;
Показатьи далее
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
АналитикаУчетаНоменклатуры.КлючАналитики КАК КлючАналитики,
ВЫРАЗИТЬ(АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.Склады) КАК СкладОтбора,
АналитикаУчетаНоменклатуры.Номенклатура КАК ТоварОтбора
ПОМЕСТИТЬ ВтАналитикаУчетаНоменклатуры
ИЗ
РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
ГДЕ
ВЫРАЗИТЬ(АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.Склады) В
(ВЫБРАТЬ
ВтСклады.СкладОтбора
ИЗ
ВтСклады)
И АналитикаУчетаНоменклатуры.Номенклатура В
(ВЫБРАТЬ
ВтТовары.ТоварОтбора
ИЗ
ВтТовары)
Показатьи далее выборка из тяжелого регистра летает что с РЛС, что без него
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВтАналитикаУчетаНоменклатуры.ТоварОтбора КАК ТоварОтбора,
СУММА(СттОстатки.КоличествоОстаток) КАК КоличествоОстаток,
СУММА(СттОстатки.СтоимостьОстаток) КАК СтоимостьОстаток
ПОМЕСТИТЬ ВтОстатки
ИЗ
РегистрНакопления.СебестоимостьТоваров.Остатки(
{(ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)) КАК Поле2},
&ПолучатьОстатки
И АналитикаУчетаНоменклатуры В
(ВЫБРАТЬ
ВтАналитикаУчетаНоменклатуры.КлючАналитики
ИЗ
ВтАналитикаУчетаНоменклатуры)) КАК СттОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтАналитикаУчетаНоменклатуры КАК ВтАналитикаУчетаНоменклатуры
ПО СттОстатки.АналитикаУчетаНоменклатуры = ВтАналитикаУчетаНоменклатуры.КлючАналитики
ГДЕ
&ПолучатьОстатки
Показатьпакеты с оборотами тоже быстрые, собственно для оборотов и делалось.
пример с остатками - просто пример.
базопузомером уточнил
ключей аналитики 2.5КК+
записей себс 125КК+
типовые отчеты без такого финта - дохлые клячи из-за отборов "по умолчанию"
если бы разрабы переписали отчеты примерно так или лучше, исправив и причесав этот костыль, то
пользователи типовых УТ/ЕРП стали бы не тонуть с воплем "Да ваша 1С дно", а ходить по воде с сиянием.
резкие образы исключительно для понимания, а не с целью оскорбить - ничего личного)
(3)набор ролей, доступных пользователю должен быть уникальным для каждого объекта метаданных, т.е. две роли не должны разграниивать доступ к одному и тому же объекту метаданных.
Если это условие не выполняется, то RLS проверяет доступ к объекту метаданных для каждой роли и чем больше ролей, тем тормознее будет работать RLS.
Если это условие не выполняется, то RLS проверяет доступ к объекту метаданных для каждой роли и чем больше ролей, тем тормознее будет работать RLS.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот