Всем привет!
Есть код:
Проблема в следующем...
У товара может быть дофига цен, то-есть для одного товара CPrice::GetListEx возвращает, например, 30-50-60 а то и больше цен.
Тогда, если товаров хотя бы 10, то в цикле для каждой цены каждого товара "дергаються" функции CCatalogDiscount::GetDiscountByPrice и CCatalogProduct::CountPriceWithDiscount.
Как это все можно оптимизировать? Или никак?
На сколько вижу документацию, передавать в CCatalogDiscount::GetDiscountByPrice несколько ID нельзя.
Но в таком случае количество запросов растет неимоверно что сильно нагружает страницу.
Есть идея перейти на чистый SQL получать данные в одном запросе, но это не красиво.
Кто что думает?
Есть код:
Код |
---|
$res = CPrice::GetListEx(array(), array("PRODUCT_ID" => $ProductID), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY")); while ($price = $res->Fetch()) { if ( ! empty( $price["PRICE"] ) ) { $arDiscounts = CCatalogDiscount::GetDiscountByPrice($price["ID"], $USER->GetUserGroupArray(), "N"); $discountPrice = CCatalogProduct::CountPriceWithDiscount($price["PRICE"], $price["CURRENCY"], $arDiscounts); $price["DISCOUNT_PRICE"] = $discountPrice; } } |
Проблема в следующем...
У товара может быть дофига цен, то-есть для одного товара CPrice::GetListEx возвращает, например, 30-50-60 а то и больше цен.
Тогда, если товаров хотя бы 10, то в цикле для каждой цены каждого товара "дергаються" функции CCatalogDiscount::GetDiscountByPrice и CCatalogProduct::CountPriceWithDiscount.
Как это все можно оптимизировать? Или никак?
На сколько вижу документацию, передавать в CCatalogDiscount::GetDiscountByPrice несколько ID нельзя.
Но в таком случае количество запросов растет неимоверно что сильно нагружает страницу.
Есть идея перейти на чистый SQL получать данные в одном запросе, но это не красиво.
Кто что думает?