1. В каталоге есть раздел "Воблеры", в котором около 1000 подразделов и 5000 товаров. 2. В каталоге организован фильтр с параметром INCLUDE_SUBSECTIONS => 'Y'. 3. Если фильтр производить по разделу "Воблеры", то выборка по нему длится очень долго (около 5 минут).
Как можно ускорить работу фильтра? Может индексы в базе как-то по-особенному проставить?
Битрикс меня наверное поругает но проблема с таким количеством секций реально может существовать группы - одно из мягких мест. какие варианты возможны: если оптимизация не позволяет добиться нужного результата (попробуйте поиграться с настройками mysql, только для начала проверьте в чем проблема именно тяжелого запроса) лучше сделать это и сначала понять что именно стало тормозом в запросе, но вот если и это не поможет, тогда можно попробовать так: ------------------------- Вариант 1 1. сначала выбрать в массив список нужных секций с хитростью LEFT_MARGIN и RIGHT_MARGIN (посмотрите как он работает в catalog.section.list такой запрос пройдет гораздо быстрее) 2. сделать запрос по элементам, передав в запрос уже явно массив допустимых секций (т.е. в качестве фильтра вы укажете array допустимых секций) ----------------------------------------- Вариант 2 - более муторныйб но и более постоянный, может еще где пригодиться кроме фильтров 1. делается числовое свойство ( множественное) в элементах инфоблока 2. на обработчики добавления или изменения эемента пишете в данное поле всю цепочку секций от корня до элемента (т.е. свойство должно содержать список ID секций, в которые входит элемент) 3. вместо INCLUDE_SUBSECTIONS теперь подаете в фильтр по данному свойству интересующую вас секцию --------------------------- только все же рекомендую для начала постараться поисследовать то, что есть P.S. пишу данный ответ только потому, что сам не раз наступал на такие же грабли как и вы и в некоторых случаях со скоростью ничего поделать было нельзя (кеш не в счет). Использовал либо 1 либо второй вариант
Спасибо большое, вариант с исследованием запросов мне, наверное, мало подходит, т.к. тормозит самый простой запрос без параметров, а просто выборка всех товаров из дочерних разделов раздела "Воблеры". Поэтому, действительно, попробую поиграться с 1 или 2 вариантом.
напишите хоть потом, поможет или нет и если поможет, то какой вариант я и тот и другой использовал выигрыш есть. Иногда и более чем в 100 раз скорость вырастает но тут все еще зависит и от объемов данных поэтому на разных проектах показатели могут сильно отличаться
Проблема решилась самым неожиданным образом. Воспользовался недооцененным мной механизмом оптимизации БД в админке. Время выборки сократилось с 5 минут до 2-3 секунд!!! Не делайте таких глупых ошибок, как я!