Cette requête apparaît dans mes journaux de requêtes lentes:quel (s) index (s) doit-on ajouter pour que cette requête fonctionne correctement?
SELECT
COUNT(*) AS ordersCount,
SUM(ItemsPrice + COALESCE(extrasPrice, 0.0)) AS totalValue,
SUM(ItemsPrice) AS totalValue,
SUM(std_delivery_charge) AS totalStdDeliveryCharge,
SUM(extra_delivery_charge) AS totalExtraDeliveryCharge,
this_.type AS y5_,
this_.transmissionMethod AS y6_,
this_.extra_delivery AS y7_
FROM orders this_
WHERE this_.deliveryDate BETWEEN '2010-01-01 00:00:00' AND '2010-09-01 00:00:00'
AND this_.status IN(1, 3, 2, 10, 4, 5, 11)
AND this_.senderShop_id = 10017
GROUP BY this_.type, this_.transmissionMethod, this_.extra_delivery
ORDER BY this_.deliveryDate DESC;
La table est InnoDB et a environ 880K lignes et prend entre 9-12 secondes pour exécuter. J'ai essayé d'ajouter l'index suivant ALTER TABLE orders ADD INDEX _deliverydate_senderShopId_status (deliveryDate , senderShop_id , status, type, transmissionMethod, extra_delivery);
sans gains pratiques. Toute aide et/ou suggestion est la bienvenue
Voici le plan d'exécution de la requête en ce moment:
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE this_ ref FKC3DF62E57562BA6F 8 const 139894 100.00 Using where; Using temporary; Using filesort
Je pris la valeur possible_keys sur le texte parce que je pense qu'il inclut tous les index de la table. La clé utilisée (FKC3DF62E57562BA6F) ressemble
Keyname Type Unique Packed Field Cardinality Collation Null Comment FKC3DF62E57562BA6F BTREE No No senderShop_id 4671 A
Quel est le type de colonne de deliveryDate? – Thilo
L'indexation doit être effectuée conjointement avec l'analyse des plans de requête pour voir comment ils sont réellement utilisés. Il n'est pas toujours évident de savoir comment la base de données utilisera l'index en fonction de l'optimisation effectuée par la base de données. Postez votre plan de requête avec cet index, puis nous serons dans une meilleure position pour aider – InSane
@Thilo - deliveryDate est datetime –