Подскажите пожалуйста, с чем могут быть связаны тормоза?
ИБ "CATALOG_IBLOCK_ID" имеет примерно 3000 элементов и около 200 свойств (символьные коды всех свойств уникальны).
Из этого информационного блока выбираю значения обычного текстового свойства с символьным кодом "ARTICLE".
Значения выбираются нормально, но происходит это очень медленно. Речь про подготовку к выборке: команда "$dbCatItems = CIBlockElement::GetList" выполняется около 150 секунд. А сам перебор "while ($arCatItem = $dbCatItems->Fetch())" занимает не более 1 секунды. Если сделать повторный запрос, то вместо 150 секунд уже 0-1 секунда (данные я так понимаю берутся из кэша). Но стоит изменить что-либо в абсолютно любом инфоблоке, все повторяется заново.
Я было подумал, что это может быть связано с тем что используется символьный код, поменял его на ID и вместо 150 секунд запрос стал выполняться 5-6 секунд. Очень странно, ведь, если запросы по ID свойства выполняются настолько быстрее, то почему об этом ничего не сказано в документации...
Попробовал заменить ID свойства "ARTICLE" на символьные коды аналогичных свойств, запросы выполняются 5-10 секунд вместо 150, без разницы что использовать ID, либо символьный код свойства. Под аналогичностью понимается то, что другие свойства тоже текстовые, их значения заполнены так же для всех элементов и они примерно такие же уникальные как и артикул.
Что это может быть? Не могу найти абсолютно никакого логического объяснения...
ИБ "CATALOG_IBLOCK_ID" имеет примерно 3000 элементов и около 200 свойств (символьные коды всех свойств уникальны).
Из этого информационного блока выбираю значения обычного текстового свойства с символьным кодом "ARTICLE".
Код |
---|
$start = time(); $arFiler = array( "IBLOCK_ID" => CATALOG_IBLOCK_ID, "SECTION_ID" => array ("1", "2","3"), "ACTIVE" => "Y", "SHOW_HISTORY" => "Y", "!PROPERTY_ARTICLE_VALUE" => false ); $arSelect = array("IBLOCK_ID", "ID", "IBLOCK_SECTION_ID", "PROPERTY_ARTICLE"); $dbCatItems = CIBlockElement::GetList( array("IBLOCK_SECTION_ID" => "ASC"), $arFiler, false, false, $arSelect ); echo "<p>Block 1: " . (time() - $start) . "</p>"; // УДАЛИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! while ($arCatItem = $dbCatItems->Fetch()) { } echo "<p>Block 2: " . (time() - $start) . "</p>"; // УДАЛИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Я было подумал, что это может быть связано с тем что используется символьный код, поменял его на ID и вместо 150 секунд запрос стал выполняться 5-6 секунд. Очень странно, ведь, если запросы по ID свойства выполняются настолько быстрее, то почему об этом ничего не сказано в документации...
Попробовал заменить ID свойства "ARTICLE" на символьные коды аналогичных свойств, запросы выполняются 5-10 секунд вместо 150, без разницы что использовать ID, либо символьный код свойства. Под аналогичностью понимается то, что другие свойства тоже текстовые, их значения заполнены так же для всех элементов и они примерно такие же уникальные как и артикул.
Что это может быть? Не могу найти абсолютно никакого логического объяснения...