Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wirkt sich die Spaltenreihenfolge auf die Leistung in Microsoft SQL Server 2012 aus?

Die Reihenfolge der Spalten in einer Tabelle hat im Vergleich zu den Auswirkungen Ihres Datenbankdesigns (Entitäten, Attribute und Beziehungen), Ihres Transaktionsdesigns und Ihres Abfragedesigns einen sehr geringen Einfluss auf die Leistung.

Um festzustellen, ob der Unterschied nicht zu vernachlässigen ist, müssten Sie wirklich einige Tests durchführen und die Ergebnisse vergleichen.

Normalerweise setze ich den Primärschlüssel als erste Spalte, dann den/die Fremdschlüssel und dann die natürlichen Schlüssel und Spalten, auf die häufig zugegriffen wird. Normalerweise lege ich die längeren Saiten gegen Ende der Reihe. Aber das ist nicht unbedingt eine Leistungsoptimierung, sondern eher eine Stilpräferenz, die ich der Bequemlichkeit halber verwende.

Die Reihenfolge der Spalten kann sich auf die Größe der Zeile in SQL Server auswirken, wenn eine große Anzahl von Spalten in einer Zeile nullable sind und die meisten dieser Spalten NULL enthalten. SQL Server (wie Oracle) verfügt über eine Optimierung, bei der kein Platz für Spalten reserviert ist, die NULL-Werte AM ENDE der Zeile enthalten. Für jede Spalte in der Zeile wird etwas Platz reserviert, bis zum letzten Nicht-NULL-Wert in der Zeile.

Die Erkenntnis daraus ist, dass Sie, wenn Sie viele nullfähige Spalten haben, die Spalten, die am häufigsten nicht NULL sind, VOR den Spalten haben möchten, die am häufigsten NULL sind.

HINWEIS:Denken Sie daran, dass SQL Server die Spalten innerhalb einer Tabelle zunächst danach ordnet, ob die Spalte eine feste Länge oder eine variable Länge hat. Alle Spalten mit fester Länge werden zuerst gespeichert, dann gefolgt von allen Spalten mit variabler Länge. Innerhalb dieser Spaltensätze (fest und variabel) werden die Spalten in der Reihenfolge gespeichert, in der sie definiert wurden.