Spalteninhalt löschen

dcst55

Aktiver Benutzer
Beiträge
48
Hallo zusammen,

macht es aus Performance Sicht etwas aus, in einer großen Tabelle Spalten ohne Inhalt zu löschen, statt mit einem Leerzeichen zu überschreiben?

Es handelt sich um eine InnoDB Tabelle und die zutreffenden Spalten sind varchar100, varchar250 und int(11)

Besten Dank im Voraus!
 
Werbung:
also, prinzipiell kannst Du, wenn da kein Inhalt ist, das mit NULL füllen. Ich kenne und nutze MySQL nicht, in PostgreSQL belegen Strings faktisch so viel Platz, wie sie lang sind, plus eine Längenangabe. Dürfte in MySQL und Derivaten ähnlich sein. Unter Umständen werden Strings komprimiert gespeichert, nennt sich TOAST. Aber das spielt hier keine Rolle, weil MySQL das natürlich nicht kann.
 
Also NULL ist nicht existent, das macht am meisten Sinn oder die ganze Spalte verwerfen. Ein Leerzeichen im wörtlichen Sinne macht so gar keinen Sinn. Die Performance sollte sich faktisch in beiden Varianten gar nicht unterscheiden.
 
Und int11 ist auch nicht so gut geeignet für ein Leerzeichen (keine Ahnung, wie mysql reagiert)

Ich würde jedenfalls nie Datenkonsistenz nach Performance behandeln, selbst wenn es schneller wäre, Leerzeichen zu speichern.
 
also, prinzipiell kannst Du, wenn da kein Inhalt ist, das mit NULL füllen. Ich kenne und nutze MySQL nicht, in PostgreSQL belegen Strings faktisch so viel Platz, wie sie lang sind, plus eine Längenangabe. Dürfte in MySQL und Derivaten ähnlich sein. Unter Umständen werden Strings komprimiert gespeichert, nennt sich TOAST. Aber das spielt hier keine Rolle, weil MySQL das natürlich nicht kann.
Danke für deine ausführliche Antwort. Mir geht es nicht um den belegten Speicherplatz, uch wenn man den Punkt nicht unbeachtet lassen sollte! Aber in erster Linie wollte ich die Auswirkungen auf die Performance näher betrachten!
 
Also NULL ist nicht existent, das macht am meisten Sinn oder die ganze Spalte verwerfen. Ein Leerzeichen im wörtlichen Sinne macht so gar keinen Sinn. Die Performance sollte sich faktisch in beiden Varianten gar nicht unterscheiden.
Die vermeintlich „leeren“ Zellen sind nicht alle in der selben Spalte, daher ist das etwas schwierig!
Aber genau die Aussage habe ich erwartet. Nämlich, dass es keine Auswirkungen auf die Performance hat, wenn die Zelle mit einem Leerzeichen oder NULL gefüllt ist.
 
Also "leer" ist NULL, alles andere ist nicht leer. Sind Daten gespeichert, wie z.B. eine Zeichenkette mit 0 Zeichen oder einem Leerschritt oder einem netten Spruch "hier keine Daten", dann belegt das Speicherplatz - je nach Format der Spalte unterschiedlich viel. Wird das gelesen braucht es auch Performance. Der Unterschied dürfte kaum messbar sein aber ja, es gibt ihn.
 
Werbung:
Ich würde jedenfalls nie Datenkonsistenz nach Performance behandeln
Wie meinst du den Satz genau?
Nie Datenkonsistenz nachrangig zur Performance behandeln.*
Eine DB Engine liefert einen Haufen tolle "Werkzeuge", um konsistente Daten zu gewährleisten, das ist das Wichtigste!
Performance kommt erst danach. Wenn auch da die Bordwerkzeuge (Indizierung, Indextypen, Partitionierung, Cluster .. ) alles nicht mehr reicht, wäre der nächste Schritt ggf. Denormalisierung unter Wahrung der Konsistenz versteht sich.

*Man kann sich vielleicht darüber streiten, ob ein Leerzeichen schon eine Inkonsistenz bedeutet.
 


Schreibe deine Antwort....
Zurück
Oben