моем подходе?
Задача стояла в ускорение выборки элементов со свойствами и снижение потребления ресурсов сервером.
Подход из мануала по ORM
$promoIblock = \Bitrix\Iblock\Iblock::wakeUp($promoIblockId);
$elements = $promoIblock->getEntityDataClass()::getList([
Время выполнения: 0.149571
Память: 33 934 512
Ускоренный, но более громоздкий:
1. получаем все свойства ИБ (кеш 24 часа)
$ibProps = \Bitrix\Iblock\PropertyTable::getList([
2. получаем нужные элементы (кеш минута)
$arPromo = \Bitrix\Iblock\ElementTable::getList([
3. получаем значение свойств для элементов (кеш минута)
$properties = \Bitrix\Iblock\ElementPropertyTable::getList([
4. Разносим полученные свойства по нашим элементам
Время выполнения: 0.078432
Память 13 489 968
Есть. Ваш код будет работать только для инфоблоков 1.0. Ну и всякие интересные артефакты вроде обработки значений пользовательских типов свойств и обработки списочных свойств
спасибо за коментарий. Тут как раз каталог на ИБ 1.0. А есть возможность перевести каталог на ИБ 2.0? Чет я пока таких не встречал за 2 года. Интересно было бы сравнить производительность.
заходите в настройки инфоблока и меняете, если число свойств позволяет
Это "изменить место хранения свойств"? Помню мне крайне не советовали это делать. Попробую на копии. Тут решение Аспро, посмотрим отвалится или нет.
Обсуждают сегодня