Перейти к содержанию
mastanggt

1 страница грузится 5-10 секунд

Рекомендуемые сообщения

Здравствуйте.

Дабы не создавать кучу подобных тем напишу сюда.

Сейчас на сайте огромное количество категорий и из-за этого долго грузятся страницы.

Пробовал убирать общее количество файлов и добавлял индексы Mysql, роде все нормализовалось но все равно 1 страница грузится 5-10 секунд.

 

https://suveniry-optom0030ok.ru/suveniry-sima-land/ - вот сама ссылка которая долго грузится.

Внизу страницы вставлен хмл файл в котором отображаются сколько выполняются какие запросы.

https://suveniry-optom0030ok.ru/ - вот просто ссылка на сайт.

 

 

Вот запрос который выполняется очень долго.

query time:17.9917 seconds | controller: ControllerProductCategory
SELECT DISTINCT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2015-09-19 17:00:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2015-09-19 17:00:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2015-09-19 17:00:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2015-09-19 17:00:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 17:00:00' AND p2s.store_id = '0' AND p2c.category_id = '610' GROUP BY p.product_id ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END) ASC, LCASE(pd.name) ASC LIMIT 0,15

 

Прошу помощи 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну надо смотреть explain запроса. Думать про оптимизацию, количество данных в таблицу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Около 68к товаров и подкатегорий много, несколько сотен точно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

именно в категории 620 очень много товаров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну в ее подкатегориях.

А товары отображаются в своей категории и в родителях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

отказаться от сортировки по рейтингу,  Минус один подзапрос

Если нет СКИДОК (не акций) - еще один минус

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хранимые агрегаты. Да, пилить долго, но зато все работать будет аж пулей.

Изменено пользователем nikifalex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подсчет категорий отключите, а то у вас по полторы секунды на каждую тратится

query time:1.5057 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '7460'
query time:1.468 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '5891'
query time:1.5601 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '6261'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не существенно :(

 

Подсчет может быть потому что нужно посчитать количество товаров на странице

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не существенно :(

 

Подсчет может быть потому что нужно посчитать количество товаров на странице

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

новогодняя оттого и грузится быстро, что у ней подсчет всего в одной подкатегории идет

а в проблемной - категорий больше одной и все они считаются

 

Внизу страницы вставлен хмл файл в котором отображаются сколько выполняются какие запросы.

 

PS:насчет быстро - быстро относительно мегапроблемной

Изменено пользователем AlexDW

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не существенно :(

 

Подсчет может быть потому что нужно посчитать количество товаров на странице

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

 

60к товаров на категорию при кривых настройках укладывает 2гига VPS.

Тут нужен БОЛЬШОЙ БУБЕН.

Если решить допустим вопрос подсчета товаров их отключением вылезет еще минимум в трех местах и это без доп фунционала.

 

Под подобный проект нужно комплексное железно-программно-настроечное решение. А не "ДАЙТЕ ЗАПЛАТКУ ЧТОБЫ ПОЛЕТЕЛО".

 

С такими "самолетами можно и неделю провозится вручную дотачивая каждую запятую в запросах".

 

Можно еще купить BOOST CHUCKHA-OPTIMIZER, нанять 5 рых настройщиков скрипок и потом все равно оказаться в моих руках.

 

:ugeek:

Изменено пользователем snastik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

во! только хотел посоветовать ТС обратиться к snastik`у :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.