• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепропетровск
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. медленный запрос на Опенкарте. В чем дело?

Форумы MySQL медленный запрос на Опенкарте. В чем дело?
novotermua
07.07.2016 10:38
хостинг: есть
домен: есть
медленный запрос на Опенкарте. В чем дело?
Вот запрос:
SELECT
            `a`.`attribute_id`,
            REPLACE(REPLACE(TRIM(pa.text), '
'
, ''), '
'
, '') AS `txt`,
            `ad`.`name`,
            `agd`.`name` AS `gname`,
            `agd`.`attribute_group_id`
         FROM
            `oc_product` AS `p`
         INNER JOIN
            `oc_product_to_store` AS `pts`
         ON
            `p`.`product_id` = `pts`.`product_id` AND `pts`.`store_id` = 0
         INNER JOIN
            `oc_product_attribute` AS `pa`
         ON
            `p`.`product_id` = `pa`.`product_id` AND `pa`.`language_id` = 1
         INNER JOIN
            `oc_attribute` AS `a`
         ON
            `a`.`attribute_id` = `pa`.`attribute_id`
         INNER JOIN
            `oc_attribute_description` AS `ad`
         ON
            `ad`.`attribute_id` = `a`.`attribute_id` AND `ad`.`language_id` = 1
         INNER JOIN
            `oc_attribute_group` AS `ag`
         ON
            `ag`.`attribute_group_id` = `a`.`attribute_group_id`
         INNER JOIN
            `oc_attribute_group_description` AS `agd`
         ON
            `agd`.`attribute_group_id` = `ag`.`attribute_group_id` AND `agd`.`language_id` = 1
 
         INNER JOIN
            `oc_product_to_category` AS `p2c`
         ON
            `p2c`.`product_id` = `p`.`product_id`
 
         INNER JOIN
            `oc_category_path` AS `cp`
         ON
            `cp`.`category_id` = `p2c`.`category_id`
 
         WHERE
            `p`.`date_available` <= NOW() AND `p`.`status` = '1' AND `cp`.`path_id` = '71'
         GROUP BY
            `txt`, `pa`.`attribute_id`
         HAVING
            `txt` != ''
         ORDER BY
            `a`.`sort_order`,
            `txt`


За последнее время ничего не устанавливали, только заливали товар. Скажите в чем может быть причина. Спасибо.
info620
08.07.2016 10:59
хостинг: есть
домен: есть
Без конкретно вашей БД понять что не так крайне сложно.

MySQL :: MySQL 5.5 Reference Manual :: 13.8.2 EXPLAIN Syntax

Посмотрите сколько записей отбираются, используются ли индекс, какой индекс. На вскидку:
# Напишите секцию WHERE в обратном порядке
# Посмотрите можно ли заменить сей запрос на VIEW потому что REPLACE и TRIM в секции SELECT не кешируються

ІМХО у вас просто стало много записей вот и все :)
Илья
09.07.2016 22:30
хостинг: есть
домен: есть
Выполните этот запрос в базу данных, но перед запросом поставьте слово EXPLAIN, таблицу с результатом опубликуйте на форуме.
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.
Горячая линия
(044)
392 74 33
другие города