Выборка из независимого регистра сведений: оптимизация #749380


#0 by Darhon
Доброго вечера. Помогите разрешить мои сомнения и вопросы... следующая ситуация: есть независимый регистр сведений, в него пишутся события по времени, каждый день около 2000. На форме обработки есть динамический список куда запросом вытягиваются эти события ограниченные условием в запросе...например "с начала текущего дня", так как они туду добавляются, то запрос часто перевыполняется. Подскажите при количестве записей около миллиона это же будет жутко тупить? и как можно данную процедуру оптимизировать....?База файловая. 1С 8.3. Заранее спасибо
#1 by ДенисЧ
Можно. Заходим на форму. Ctrl-A, Del, Ctrl-S, F7 И начинаем думать сначала
#2 by Casey1984
Напили миллион записей и проверь.
#3 by Lama12
Выбрать первые, и максимум по ключу. Это должно спасти отца русской демократии.Ну в крайнем случае не максимум, а исключить ранее быбранные.
#4 by Lama12
сорри. Про дс проглядел.
#5 by Darhon
В какую сторону думать?) От совета не откажусь.
#6 by Darhon
проблемно...
#7 by Casey1984
не думаю...
#8 by Darhon
Может быть есть возможность осуществлять первоначальную выборку , например начиная со числа -1 день от текущей даты, и уже на основе ее данных формировать запросы?
#9 by Darhon
600 000 записано :))
#10 by Casey1984
В запрос динамического списка таблицу не передать, какой толк от первоначальной выборки? Никакого.
#11 by MadJhey
прав. в чем сложность. А по сути: дин. список читает данные порциями. Я не знаю, что ты написал в запросе. Но обычно дин. список на уровне sql преобразуется в: select top 50 (если кто знает точный  размер порции для ДС в 8.3, пусть напишит) from "НазваниеТаблицы" with (NOLock) where "Условие". Отсюда вывод: 1. упрощать запрос 2. поиграть с индексами. Нужны индексы для полей "Условие". Индексы должны быть без "разрывов". Т.е есть условия по полю1, полю2, полю3. Индексы должны быть у всех полей, а не только поле1, поле3. И в условие не должно быть "НЕ", "ПОДОБНО" и пр.
#12 by Casey1984
опередил)
#13 by Casey1984
читай оптимизация запросов, индексы)
#14 by MadJhey
черт. У него файловая! А как 1с работает в этом случае? Я лично не знаю.
#15 by Darhon
В общем, если в список выводится более 100000 записей начинаются жесткие тупняки )) Но если в списке порядка 2-5 000 записей, то никаких замедлений нет.  Запросы отрабатывают штатно.
#16 by Darhon
запрос на уровне выбрать события ИЗ регистрСведений ГДЕ Дата события МЕЖДУ ДатаНачали И ДатаКонца...
#17 by MadJhey
Ок. Будем считать что в 1с не идиоты. И для запросов они тоже используют индексы. Выведи весь запрос.
#18 by Darhon
#19 by ДенисЧ
Анафейхоа в динсписок (да и вообще в список) выводить 100500 записей? Кто их читать будет?
#20 by Darhon
Начальнике хочет чтобы диспетчер видел все события за день. (( Их не будет 100500 конечно же...тысяч 2 максимум) Но...за год в самом регистре наберется под лям(
#21 by Darhon
Ну и файловый вариант смущает )
#22 by ДенисЧ
"если в список выводится более 100000 записей начинаются жесткие тупняки" "если в списке порядка 2-5 000 записей, то никаких замедлений нет" Ты уж определись
#23 by MadJhey
Время  - проиндексирован? Можешь Заказы.Статус <> &Снят поменять на Заказы.Статус = &НеСнят
#24 by Darhon
Могу. Это из-за НЕ РАВНО?
#25 by MadJhey
Статус тоже проиндексировать
#26 by Darhon
Это я к предложению потестировать на  миллионе записей в регистре. Так как создались они текущейдатой, то и в список вылезли сразу все ) ИРЛ такого надеюсь не будет )
#27 by MadJhey
SQL берет значение из таблицы и сравнивает с параметром, равно или не равно, и так по всей таблице. Если условие с равно и поле условия есть в индексе то отбор идет по индексу. Это на порядок быстрее.
#28 by MadJhey
Попробуй. Отпишись по результату.
#29 by Darhon
ок. Обязательно. Пробовать буду завтра, на 3 пользователях, у них открыт один и тот-же список, так что нагрузка будет тройная. Правда я еще не придумал, как обновлять список у всех одновременно, чтобы новые данные появлялись  у всех))
#30 by MadJhey
Еще момент, если больше ни где этот регистр сильно не задействован, попробуй поставить поля время и статус вначале списка измерений.
#31 by MadJhey
Первое измерение индексируется автоматически по нему не обязательно ставить "индексировать".
#32 by Darhon
Измерение только ИД, осьтальнок ресурсы
#33 by MadJhey
Тогда давай помедитируем вот над такой табличкой: Индексы непереодического регистра сведений. Измерение1 + [Измерение2 +...]    Есть хоть одно измерение регистра. Индекс, включающий все измерения в том порядке, в котором они заданы при конфигурировании. ИзмерениеN + Измерение1 + [Измерение2 +...]    Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не первое и не единственное измерение. Индекс, включающий все измерения. Первое поле - ИзмерениеN, затем все остальные измерения в том порядке, в котором они заданы при конфигурировании. Реквизит + Измерение1 + [Измерение2 +...]    Реквизиту "Реквизит" задано свойство "Индексировать". Индекс в котором первое поле - Реквизит, затем все измерения в том порядке, в котором они заданы при конфигурировании. Ресурс + Измерение1 + [Измерение2 +...]    Ресурсу "Ресурс" задано свойство "Индексировать". Индекс в котором первое поле - Ресурс, затем все измерения в том порядке, в котором они заданы при конфигурировании.
#34 by MadJhey
У нас условие по двум ресурсам. Т.е сможем использовать только один индекс, затем частичное сканирование таблицы.
#35 by MadJhey
Не правильно написал. Надо: Сможем провести поиск только по первому полю из индекса (ресурс+ иземерение1+...), при условии что у данного ресурса стоит параметр "индексировать".
#36 by MadJhey
Затем частичное сканирование.
#37 by Darhon
Оставил условие только по времени, время  индексируется. Отрабатывает значительно быстрее, при работе 3-х пользователей одновременно никаких нареканий нет. Можно конечно более детально замерить производительность запроса, но...пока нужды нет. Тес проводился на РС с 2 500 000 записей. В дневную выборку попадало 5 000.  Результат даже на файловой базе пристойный.  Я так понимаю, что все вышесказанное будет справедливо и при переезде на серовер SQL?
#38 by MadJhey
Это как и раз было для SQL.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С

Back to top