MySQL Index für Group By / Order By

Sehen Abfrage unten. Was index sollte ich auf den Tisch, damit die Abfrage den index verwenden und vermeiden Sie die Verwendung von temporären und filesort? Ich habe versucht viele verschiedene Kombinationen von Indizes und Lesen Beratung hier, aber ich kann nicht scheinen, um es herauszufinden. Meine erklären entweder sagt Using Where (kein index), oder Using Where Using Temporary, Using Filesort

Hier ist eine vereinfachte Abfrage. Alle Spalten, die ganze zahlen sind.

SELECT c1, Sum(c2) 
FROM table 
WHERE c3 IS NOT NULL 
AND c4 = 2011 
AND c5 = 0 
AND c6 In (6,9,11)  
GROUP BY c1
  • Beachten Sie, dass MySQL kann nur ein index pro Tabelle, so, wenn Sie einen index auf eine Spalte(s) optimieren Sie die GRUPPE, INDEM Sie könnten am Ende verletzen sich selbst, wie die WHERE-Klauseln sind nicht optimierten und letztlich mehr Arbeit muss getan werden (dh full table scan).
  • Ich verstehe, dass, aber es ist eine Möglichkeit, um einen einzigen index, der verwendet werden kann, indem sowohl das GROUP BY und WHERE-Klauseln?
InformationsquelleAutor bradvido | 2011-09-19
Schreibe einen Kommentar