Das mit der Domain, wenn ich es verstanden habe, wird genutzt um später verschiedenen Spalten, die die selbe Charaktaristik haben, die gleiche Domain zu geben, um es einfacher zu haben die Eigenschaften der Spalten zuzuweisen.
Zitat:
Zitat:
Da haue ich schnelle eine Zwischenfrage rein:
Ist Char(n) nicht schneller als VarChar(n) und bei weitgehend gleich breiten Zeichenketten besser?
Also, das mit Char und VarChar habe ich so verstanden, und steht so in der Doku
In der Praxis sollten Sie eine Regel beachten: verwenden Sie nur CHARs, wenn Strings mit wenigen Zeichen gespeichert werden sollen; die Ausnahme der Regel ist, wenn Sie mit Zwischentabellen arbeiten, die für den Datenexport von prn-Dateien mit festen Längen benötigt werden. Dann sind Felder mit festen Längen von Vorteil.
Tatsächlich benötigen VARCHAR-Spalten mehr Speicherplatz als CHAR-Spalten, da bei der Speicherng eines VARCHARs, InterBase/Firebird zwei Bytes hinzufügt, die anzeigen, wie groß der VARCHAR tatsächlich ist.
ALso wird ein CHAR tatsächlich mit weniger Paltzbedarf gespeichert. Wenn jedoch ein SELECT auf einer VARCHAR-Spalte erfolgt,schneidet InterBase/Firebird das 2-Byte-Polster ab und speichert den Wert. Wenn ein SELECT auf eine CHAR-Spalte erfolgt, gibt InterBase/Firebird den Wert und die "Leerzeichen" zurück. Also muss die Speicherung der zwei Bytes in einem CHAR gegen die nachträgliche Entfernung der Leerzeichen auf der Clientseite abgewogen werden. Diese beiden Bytes sind jedoch bei der heutigen Hardware so vernachlässigbar, dass sie keinen Einfluss auf die Datenbankgeschwindigkeit haben. Dies kann jedoch nachteilig bei der Definition von kurzen Textfeldern sein.