Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 23:32
char/varchar(32765) ist das maximum bei single byte character sets, bei utf8 aber nur maximal char/varchar(8191)
wenn auf der db default character set eingestellt war, dann wird das für alle string felder genommen,
wenn da nicht explizit was anderes deklariert wird (kann man nämlich auch in einer Tabelle mischen wenn
man will).

Lange char/Varchar sind gleichzeitig gut und schlecht, weil wenn man zB 1024 Byte lange keys für encryption
speichern will geht das da drin super, wenn man aber extrem lange char/varchar felder auf verdacht deklariert
muss man wissen, das auf der datenbankadtei ein char/varchar(32765) schon mal minimum ca 500 Byte belegt,
auch wenn da nix drin steht. Wenn so was da in einer temp datei wegen sort ohne index oder group by
landet, dann stehen die werte da drin sogar in voller länger. sollte man nur wissen.

Blobs haben andere vor und nachteile, hatte ich mal in meinen stammtisch videos auf youtube ziemlich ausführlich erklärt.

Nachteile sind aber immer nicht wirklich problematisch und in fast allen Fällen flexibel umstellbar durch
Anpassungen am Datenmodell.

Group by und Order by macht auf blobs wirklich unsinn, weil das im Prinzip auf dem Blobpointer sortiert/gruppiert
und nicht auf den daten. Wenn erforderlich, dann kann man vor dem sortieren das feld mit cast evtl ergänzt mit
substring be bedarf als varchar umwandeln, um das sinnvoll zu sortieren. Sinnvolle Gründe, blobs zu sortieren
kenn ich aber eher nicht (außer Datenmodelle von vor 20+x Jahren)
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat