@hloya_ram

Почему в динамическом списке отбор быстрее условий в запросе, и так ли это вообще?

Добрый день.

Есть обработка с множеством полей отбора по 100 тысячам позиций номенклатуры.
Есть две идеи:
1. Постоянная смена запроса динамического списка (добавлять условия или удалять их, в зависимости от данных в этих полях);
2. Использовать типовой отбор.

Знакомый всеми руками за первый пункт, но его реализация дичайше тормозит. А вот типовой 1C-овский отбор списка с такими же фильтрами работает очень здраво.

Почему так происходит и в чем вообще отличие двух методов? Плохая реализация запроса?? Есть ли где-то информация об этом?

Спасибо за пояснение!
  • Вопрос задан
  • 923 просмотра
Решения вопроса 1
@Dementor
программист, архитектор, аналитик
Решение упирается в текст запроса. Варианты почему условие медленное:
1) Для условия использованы подзапросы
2) В запросе используются ИЛИ
3) Условия запроса по НЕ индексируемым полям, что требует скан в плане запроса СУБД.

Первый вариант (со сменой текста запроса динамического списка) - это глупости, не делайте так. Смена источника динамического запроса (помимо издержек на эту смену с переинициацией настроек компоновки) приводит к сбросу кеша динамического списка на стороне сервера. В моей практике был такой опыт, но у меня тогда реально разные источники были. Если можете все решить стандартными отборами, то именно так и делайте!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Dem0lisher
Есть еще вариант, если используются вирт. таблицы регистров например: вместо установки параметров для виртуальных таблиц используются условия "ГДЕ". Которые накладываются уже после того как выбраны все данные из виртуальной таблицы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы