@cs-cart_team
Есть какие-нибудь подвижки? Карточек товаров стало на тысячу больше, около 30 тысяч. Вендоров стало побольше, но меньше 200.
Число товаров в 30к - это совсем не много. Число вендоров в пару сотен - и вовсе ерунда.
Число записей в таблице Products улетело далеко за 4 миллиона, про остальные вообще молчу.
Страница списка товаров всех вендоров открывается 70-100 секунд. Блок отображения наличия товара у продавцов генерирует тысячи запросов на странице карточки товаров, что так же занимает время и создает нагрузку(когда всё идеально - 0,3 секунды, но это только если трафика на сайте нет, а он есть всегда, как минимум от поисковых роботов).
В ядре надо исправить, как минимум, две функции. Первая - выборка товаров и подсчет пагинации.
Конкретно - вот этот запрос(кастомная его часть увеличивает время выполнения не существенно, тормозит коробочная).
SELECT
SQL_CALC_FOUND_ROWS products.product_id,
descr1.product as product,
companies.company as company_name,
products.product_type,
products.parent_product_id,
products.master_product_id,
products.company_id,
products.rf_stop_update_price,
products.rf_stop_update_amount,
products.rf_stop_update_status,
(
SELECT
SUM(amount)
FROM
cscart_products
WHERE
product_id = products.product_id
AND company_id = 1
) as geolocation_amount,
0 as geolocation_amount2
FROM
cscart_products as products
LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id
AND descr1.lang_code = ‘ru’
LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id
AND prices.lower_limit = 1
AND prices.usergroup_id IN (0)
LEFT JOIN cscart_companies AS companies ON companies.company_id = products.company_id
INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id
INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id
LEFT JOIN cscart_product_popularity as popularity ON popularity.product_id = products.product_id
WHERE
1
AND products.company_id <> 0
AND products.product_type != ‘D’
GROUP BY
products.product_id
ORDER BY
popularity.total desc,
products.product_id ASC
LIMIT
0, 10
Вторая - выборка товаров вендоров для блока addons/master_products/blocks/products/vendor_products.tpl
4000 запросов - наверное немного перебор(увеличиваются кратно увеличению числа вендоров). А ведь товар с сотней вариаций тоже возможен и там похоже будут точно такие же проблемы(а склады не так же реализованы?).
Прошу помочь(ну или как минимум это исправить на благо своей платформы и её пользователей), у вас фактически не работает заявленный функционал. И вопрос не в железе, у меня достаточно производительный сервер - избыточная память, ядра и сверхбыстрые диски тут никак не помогают скрыть программные недоработки.