2011-01-03 2 views
11

Bei der Auswahl von Spalten aus einer MySQL-Tabelle wird die Leistung von der Reihenfolge beeinflusst, in der Sie die Spalten im Vergleich zu ihrer Reihenfolge in der Tabelle auswählen (ohne Berücksichtigung von Indizes, die die Spalten abdecken können)?Ist die Reihenfolge der Spalten in einer Abfrage von Bedeutung?

Zum Beispiel haben Sie eine Tabelle mit Zeilen uid, name, bday, und Sie haben die folgende Abfrage.

SELECT uid, name, bday FROM table 

Sieht MySQL die folgende Abfrage anders und verursacht so irgendeine Art von Leistungseinbruch?

SELECT uid, bday, name FROM table 

Antwort

7

Die Reihenfolge ist eigentlich egal, so dass Sie sie frei bestellen können, wie Sie möchten.

edit: Ich denke, ein bisschen mehr Hintergrund ist hilfreich: Soweit ich weiß, passiert der Prozess der Optimierung einer Abfrage vor der Bestimmung genau, welche Teilmenge der Zeilendaten gezogen wird. Der Abfrageoptimierer teilt also zuerst in die zu betrachtende Tabelle, die zu verwendenden Joins, die zu verwendenden Indizes, die zu verwendenden Aggregate usw. auf und ruft dann diese Datenmenge ab. Die Reihenfolge der Spalten erfolgt zwischen der Datenübernahme und der Bildung der Ergebnismenge, so dass die Daten tatsächlich wie von der Datenbank bestellt "ankommen" und dann neu angeordnet werden, wenn sie an Ihre Anwendung zurückgegeben werden.

2

In der Praxis vermute ich, dass es könnte.

Mit einem anständigen Abfrageoptimierer: sollte es nicht.

Sie können nur für Ihre Fälle durch Messen ermitteln. Und die Messungen werden sich wahrscheinlich ändern, wenn sich die Datenverteilung in der Datenbank ändert.

hinsichtlich

Wazzy

0

Die Reihenfolge der ausgewählten Attribute ist vernachlässigbar. Die zugrundeliegenden Speicher-Engines sortieren ihre Attributpositionen sicher, aber Sie haben nicht unbedingt eine Möglichkeit, die spezifische Reihenfolge zu kennen (Umbenennen, Ändern von Tabellen, Zeilen- oder Spaltenspeichern), die in den meisten Fällen unabhängig von der Tabellenbeschreibung sind sowieso. Die Reihenfolge der Darstellung in der Ergebnismenge wäre im Hinblick auf jeden messbaren Aufwand unbedeutend.