Das ist eine Frage, die ich für immer hatte.MySQL Indizes und Bestellung
Soweit ich weiß, ist die Reihenfolge der Indizes wichtig. Also ein Index wie [first_name, last_name]
ist nicht das gleiche wie [last_name, first_name]
, richtig?
Wenn ich nur den ersten Index definieren, bedeutet es, dass es nur für
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
und
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
Da ich ein ORM verwenden, verwendet wird für nicht
ich keine Ahnung, in In welcher Reihenfolge werden diese Spalten aufgerufen? Bedeutet das, dass ich Indizes für alle Permutationen hinzufügen muss? Das ist machbar, wenn ich einen 2-Spalten-Index habe, aber was passiert, wenn mein Index auf 3 oder 4 Spalten steht?
Also ich denke SELECT * FROM Tabelle WHERE last_name = "doe" UND first_name = "John" wird nicht? Wenn dies der Fall ist, dann, da alle Abfrage Gebäude von meinem ORM versteckt ist, muss ich wahrscheinlich die 2 Indizes definieren ... was wirklich saugt, weil ich einen Index auf 3 Spalten zu definieren haben ... –
Nein, du hast es falsch verstanden. WHERE 'last_name' =" doe "AND' first_name' = "john" -Abfrage würde entweder ('first_name',' last_name') oder ('last_name',' first_name') nur gut verwenden. – ChssPly76
Eine Frage: Für eine Abfrage mit 2 AND-Bedingungen ist es wichtig, Geschwindigkeit, es ist der Index "umgekehrt" im Vergleich zu den Bedingungen in der Abfrage, oder es hängt von der Kardinalität dieser Spalten? – Mihai