Bonjour à tous,
J'ai une table en InnoDB qui a 2 millions d'enregistrements. (C'est uniquement parce que j'ai fait tourner un programme de test toute la nuit)
Etant donné que cette table est énorme, je me suis aperçu qu'une de mes requêtes est lente ( +60s):
Pour info, cette requête est bien instantanée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT MAX(IndexedColumn) FROM ( myBigTable) WHERE aColumn=1
Dans la colonne "aColumn", il n'y a que 2 valeurs différentes (1 et 2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT MAX(IndexedColumn) FROM ( myBigTable)
Il y a 2 millions d’enregistrements ayant "aColumn" avec la valeur 1 et 4000 ayant la valeur 2.
Vu le temps, j'ai l'impression que mysql utilise d'abord la colonne where, puis sur tous les résultats prends le max.
Alors qu'il serait plus performant de retourner le premier max ou la condition est vrai.
Existe-il une autre façon d'écrire cette requête ?
Merci.
Partager