Ich würde es wagen, in Bezug auf den Tisch vorne nein zu sagen. Die Reihenfolge der Felder in einem Index und die Anzahl der Felder in einem WHERE spielen jedoch eine große Rolle.
Beispiel: Sie haben folgende Tabelle:
CREATE TABLE testtable
(
a INT,
b INT,
c INT,
KEY (a,b,c)
);
Beachten Sie diese Abfrage:
SELECT * FROM testtable WHERE a=1 AND b=2 AND c=3;
Da jede Spalte in der WHERE-Klausel als eq_ref, auch bekannt als equa-reference (using =), erwähnt wird, kann der Index verwendet werden, um eine Spalte auf Null zu setzen.
Beachten Sie diese Abfrage:
SELECT * FROM testtable WHERE a=1 AND b>2 AND c=3;
Spalte a steht als eq_ref vor dem Index, Spalte b jedoch nicht. Dies ist eine Bereichsabfrage. Abhängig von der Kardinalität von Spalte a (Kardinalität in SHOW INDEXES FROM testtable sichtbar) wird ein Index-Scan durchgeführt, wenn die Kardinalität von a = 1 sehr niedrig ist und die Gesamtzahl der Zeilen mit Spalte a = 1 weniger als 5% der Anzahl der Zeilen beträgt Andernfalls wird in testtable ein vollständiger Tabellenscan von einem beliebigen Abfrageoptimierer (MySQL, Oracle, PostgreSQL, SQL Server usw.) ausgewählt.
Beachten Sie diese Abfrage:
SELECT * FROM testtable WHERE b=>2 AND c=3;
Diese WHERE-Klausel erwähnt niemals Spalte a. Ergebnis? automatischer vollständiger Tabellenscan.
In Bezug auf die Reihenfolge der Spalten in einer Tabelle kann das Defragmentieren von Tabellen und das Erstellen von Tabellenformaten mit festen Zeilenlängen mögliche Probleme bei der Reihenfolge der Tabellenspalten verringern. Dies ist ein vermutetes Problem.
Wenn jemand Probleme mit Oracle, PostgreSQL, SQL Server oder anderen RDBMS bezüglich der Reihenfolge der Tabellenspalten kennt, melden Sie sich bitte an.