Lorsque je vérifie SHOW PROCESSLIST;
dans la base de données, j'ai eu une requête ci-dessous. Il utilise beaucoup de CPU (plus de 100%), il a fallu 80 secondes pour terminer la requête. Nous avons un serveur séparé pour la base de données (64GB RAM).requête lente avec beaucoup de jointures à gauche
INSERT INTO `search_tmp_598075de5c7e67_73335919`
SELECT `main_select`.`entity_id`, MAX(score) AS `relevance`
FROM (SELECT `search_index`.`entity_id`, (((0)) * 1) AS score
FROM `catalogsearch_fulltext_scope1` AS `search_index`
LEFT JOIN `catalog_eav_attribute` AS `cea`
ON search_index.attribute_id = cea.attribute_id
LEFT JOIN `catalog_category_product_index` AS `category_ids_index`
ON search_index.entity_id = category_ids_index.product_id
LEFT JOIN `review_entity_summary` AS `rating`
ON `rating`.`entity_pk_value`=`search_index`.entity_id
AND `rating`.entity_type = 1
AND `rating`.store_id = 1
WHERE (category_ids_index.category_id = 2299)
) AS `main_select`
GROUP BY `entity_id`
ORDER BY `relevance` DESC
LIMIT 10000
Pourquoi cette requête utilise-t-elle mes ressources CPU complètes?
Mauvais ou ne pas indexer dans la partie SELECT peut-être nous avons besoin de voir une explication de la partie de sélection. –
Quelles sont les clés primaires de vos tables? – trincot
Ceci est un exemple à quoi les requêtes ne devraient pas ressembler. –