Wie bereits erwähnt, gibt es zahlreiche potenzielle Leistungsprobleme. Ich habe einmal an einer Datenbank gearbeitet, in der das Platzieren sehr großer Spalten am Ende die Leistung verbesserte, wenn Sie diese Spalten in Ihrer Abfrage nicht referenzierten. Wenn ein Datensatz mehrere Plattenblöcke umfasst, kann das Datenbankmodul anscheinend das Lesen von Blöcken beenden, sobald alle erforderlichen Spalten vorhanden sind.
Natürlich hängen die Auswirkungen auf die Leistung nicht nur stark vom Hersteller ab, den Sie verwenden, sondern möglicherweise auch von der Version. Vor einigen Monaten habe ich festgestellt, dass unsere Postgres keinen Index für einen "Gefällt mir" -Vergleich verwenden konnten. Das heißt, wenn Sie "eine Spalte wie 'M%'" geschrieben haben, war es nicht klug genug, zu den Ms zu springen und zu beenden, wenn das erste N gefunden wurde. Ich hatte vor, eine Reihe von Abfragen zu ändern, um "zwischen" zu verwenden. Dann haben wir eine neue Version von Postgres bekommen, die intelligent mit ähnlichen Dingen umgeht. Ich bin froh, dass ich nie dazu gekommen bin, die Abfragen zu ändern. Natürlich nicht direkt relevant, aber mein Punkt ist, dass alles, was Sie aus Effizienzgründen tun, mit der nächsten Version überholt sein könnte.
Die Spaltenreihenfolge ist für mich fast immer sehr relevant, da ich routinemäßig generischen Code schreibe, der das Datenbankschema liest, um Bildschirme zu erstellen. Meine Bildschirme zum Bearbeiten eines Datensatzes werden fast immer erstellt, indem ich das Schema lese, um die Liste der Felder abzurufen und sie dann der Reihe nach anzuzeigen. Wenn ich die Reihenfolge der Spalten ändern würde, würde mein Programm immer noch funktionieren, aber die Anzeige könnte für den Benutzer seltsam sein. Sie erwarten, dass Name / Adresse / Stadt / Bundesland / Postleitzahl angezeigt wird, nicht Stadt / Adresse / Postleitzahl / Name / Bundesland. Sicher, ich könnte die Anzeigereihenfolge der Spalten in Code oder eine Steuerdatei oder so etwas einfügen, aber jedes Mal, wenn wir eine Spalte hinzufügen oder entfernen, müssen wir daran denken, die Steuerdatei zu aktualisieren. Ich mag es, Dinge einmal zu sagen. Wenn der Bearbeitungsbildschirm nur aus dem Schema erstellt wird, Das Hinzufügen einer neuen Tabelle kann bedeuten, dass keine Codezeilen geschrieben werden, um einen Bearbeitungsbildschirm dafür zu erstellen, was sehr cool ist. (Nun, okay, in der Praxis muss ich normalerweise einen Eintrag zum Menü hinzufügen, um das generische Bearbeitungsprogramm aufzurufen, und ich habe generell auf das generische "Auswählen eines zu aktualisierenden Datensatzes" verzichtet, da es zu viele Ausnahmen gibt, um es praktisch zu machen .)