Einzelnen Beitrag anzeigen

AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#1

Speicherbedarf bei Datenbank Query

  Alt 1. Sep 2014, 16:09
Datenbank: Firebird • Version: 2.5 • Zugriff über: AnyDac
Hallo zusammen,

ich bin gerade auf etwas gestoßen und frage mich ob man hier die Performance steigern kann.

Und zwar habe ich in einer Beispiel-Tabelle zwei Felder. Eines als VARCHAR(100) und das andere als VARCHAR(1000) deklariert. In der Tabelle befinden sich ca. 30.000 Datensätze. Alle Rows in beiden Spalten sind mit nur einem Zeichen bestückt.

Wenn ich jetzt einen FetchAll zunächst auf die 1. Spalte ausführe und dann zum Vergleich auf die 2. Spalte ausführe so kann ich feststellen, dass wesentlich mehr Speicher beim FetchAll auf die Spalte VarChar(1000) reserviert wird. Ist auch klar(?), da ja das Feld 10 mal so viel Zeichen speichern kann.

Aber ist es wirklich klar? Firebird selbst kann ja damit umgehen und reserviert bei VARCHAR nur so viel Speicher wie tatsächlich in den Zellen steht. In IBExpert oder auch mit AnyDac wird jedoch immer so viel Speicher reserviert wie max. in der Spalte an Daten kommen könnte.

Jetzt meine Frage: Gibt es eine Möglichkeit, so dass beim FetchAll (z.B. über einen AnyDac Query) nur so viel Speicher reserviert / benötigt wird, wie tatsächlich aus der Datenbank kommt? Oder macht das keinen Sinn? Ich denke dadurch könnte die Performance doch gesteigert werden?!?

Viele Grüße,
Andy
Andreas Blenk

Geändert von AndyDF ( 1. Sep 2014 um 18:04 Uhr)
  Mit Zitat antworten Zitat