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):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT MAX(IndexedColumn) FROM ( myBigTable) WHERE aColumn=1
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)
Dans la colonne "aColumn", il n'y a que 2 valeurs différentes (1 et 2)
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.