#0
by Darhon
Доброго вечера. Помогите разрешить мои сомнения и вопросы... следующая ситуация: есть независимый регистр сведений, в него пишутся события по времени, каждый день около 2000. На форме обработки есть динамический список куда запросом вытягиваются эти события ограниченные условием в запросе...например "с начала текущего дня", так как они туду добавляются, то запрос часто перевыполняется. Подскажите при количестве записей около миллиона это же будет жутко тупить? и как можно данную процедуру оптимизировать....?База файловая. 1С 8.3. Заранее спасибо
#3
by Lama12
Выбрать первые, и максимум по ключу. Это должно спасти отца русской демократии.Ну в крайнем случае не максимум, а исключить ранее быбранные.
#8
by Darhon
Может быть есть возможность осуществлять первоначальную выборку , например начиная со числа -1 день от текущей даты, и уже на основе ее данных формировать запросы?
#10
by Casey1984
В запрос динамического списка таблицу не передать, какой толк от первоначальной выборки? Никакого.
#11
by MadJhey
прав. в чем сложность. А по сути: дин. список читает данные порциями. Я не знаю, что ты написал в запросе. Но обычно дин. список на уровне sql преобразуется в: select top 50 (если кто знает точный размер порции для ДС в 8.3, пусть напишит) from "НазваниеТаблицы" with (NOLock) where "Условие". Отсюда вывод: 1. упрощать запрос 2. поиграть с индексами. Нужны индексы для полей "Условие". Индексы должны быть без "разрывов". Т.е есть условия по полю1, полю2, полю3. Индексы должны быть у всех полей, а не только поле1, поле3. И в условие не должно быть "НЕ", "ПОДОБНО" и пр.
#15
by Darhon
В общем, если в список выводится более 100000 записей начинаются жесткие тупняки )) Но если в списке порядка 2-5 000 записей, то никаких замедлений нет. Запросы отрабатывают штатно.
#16
by Darhon
запрос на уровне выбрать события ИЗ регистрСведений ГДЕ Дата события МЕЖДУ ДатаНачали И ДатаКонца...
#17
by MadJhey
Ок. Будем считать что в 1с не идиоты. И для запросов они тоже используют индексы. Выведи весь запрос.
#19
by ДенисЧ
Анафейхоа в динсписок (да и вообще в список) выводить 100500 записей? Кто их читать будет?
#20
by Darhon
Начальнике хочет чтобы диспетчер видел все события за день. (( Их не будет 100500 конечно же...тысяч 2 максимум) Но...за год в самом регистре наберется под лям(
#22
by ДенисЧ
"если в список выводится более 100000 записей начинаются жесткие тупняки" "если в списке порядка 2-5 000 записей, то никаких замедлений нет" Ты уж определись
#23
by MadJhey
Время - проиндексирован? Можешь Заказы.Статус <> &Снят поменять на Заказы.Статус = &НеСнят
#26
by Darhon
Это я к предложению потестировать на миллионе записей в регистре. Так как создались они текущейдатой, то и в список вылезли сразу все ) ИРЛ такого надеюсь не будет )
#27
by MadJhey
SQL берет значение из таблицы и сравнивает с параметром, равно или не равно, и так по всей таблице. Если условие с равно и поле условия есть в индексе то отбор идет по индексу. Это на порядок быстрее.
#29
by Darhon
ок. Обязательно. Пробовать буду завтра, на 3 пользователях, у них открыт один и тот-же список, так что нагрузка будет тройная. Правда я еще не придумал, как обновлять список у всех одновременно, чтобы новые данные появлялись у всех))
#30
by MadJhey
Еще момент, если больше ни где этот регистр сильно не задействован, попробуй поставить поля время и статус вначале списка измерений.
#31
by MadJhey
Первое измерение индексируется автоматически по нему не обязательно ставить "индексировать".
#33
by MadJhey
Тогда давай помедитируем вот над такой табличкой: Индексы непереодического регистра сведений. Измерение1 + [Измерение2 +...] Есть хоть одно измерение регистра. Индекс, включающий все измерения в том порядке, в котором они заданы при конфигурировании. ИзмерениеN + Измерение1 + [Измерение2 +...] Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не первое и не единственное измерение. Индекс, включающий все измерения. Первое поле - ИзмерениеN, затем все остальные измерения в том порядке, в котором они заданы при конфигурировании. Реквизит + Измерение1 + [Измерение2 +...] Реквизиту "Реквизит" задано свойство "Индексировать". Индекс в котором первое поле - Реквизит, затем все измерения в том порядке, в котором они заданы при конфигурировании. Ресурс + Измерение1 + [Измерение2 +...] Ресурсу "Ресурс" задано свойство "Индексировать". Индекс в котором первое поле - Ресурс, затем все измерения в том порядке, в котором они заданы при конфигурировании.
#34
by MadJhey
У нас условие по двум ресурсам. Т.е сможем использовать только один индекс, затем частичное сканирование таблицы.
#35
by MadJhey
Не правильно написал. Надо: Сможем провести поиск только по первому полю из индекса (ресурс+ иземерение1+...), при условии что у данного ресурса стоит параметр "индексировать".
#37
by Darhon
Оставил условие только по времени, время индексируется. Отрабатывает значительно быстрее, при работе 3-х пользователей одновременно никаких нареканий нет. Можно конечно более детально замерить производительность запроса, но...пока нужды нет. Тес проводился на РС с 2 500 000 записей. В дневную выборку попадало 5 000. Результат даже на файловой базе пристойный. Я так понимаю, что все вышесказанное будет справедливо и при переезде на серовер SQL?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Выборка из регистра сведений
- Удаление записи регистра сведений в форме списка регистра
- Выборка регистра сведений запросом, для редактирования
- выборка из периодического регистра сведений вешает 1С.
- Конвертация независимого регистра сведений
- Поле объекта не обнаружено (Выборка) Строка.СубконтоКт= Выборка.СубконтоДт1[
- Помогите включить индексирование независимого периодического регистра сведений
В этой группе 1С
- Как определить текущего пользователя в тонком клиенте?
- Что предпочтительнее RDP или Веб-клиент?
- веб-клиент, динамический список, высота в строках таблицы
- Ошибка печати -com объекты поддерживаются только в операционных системах windows
- 1С:Розница 2.1 Выемка денег из ККМ
- Выполнение процедуры или функции только с Расширения 1с 8.3.6.2100
- Перенос документов Поступление товаров и услуг из БП 3.0 в УТ 11
- Какими методами лучше сделать http запрос к 1С из php и javascript?
- Конвертация данных - поиск объекта по GUID
- Отражение операции восстановление НДС
- ЗУП 3 не рассчитывается значение отработано по пятидневке и шестидневке по двум
- Прекращение договора на выполнение работ
- Обновление формы (ОФ) методом Оповестить()
- Ошибка при расчете себестоимости после обновления 1С: Розница на 2.1.8.13
- УТ11, не выводится нумерация страниц
- 1C (клиент-сервер) и Libre Office
- УТ11 какая методика запрета проведения документов задним числом?
- УТ11 настройка рабочего стола и панели навигации
- Флажок с тремя состояниями для дерева значений
- Запись в регистр сведений. Такая уже существует ((