Teilweises Lesen eines UDTs von der Festplatte

08/11/2011 - 19:30 von Hermie | Report spam
Hallo!

Ich habe ein UDT in dieser Form:

Private Type udtÜbersicht
Kategorien() As udtKategorien
End Type

Private Type udtKategorien
WohnortID As Long
BerufID As Long
Personen() As udtPerson
End Type

Private Type udtPerson
BerufID As Long
WohnortID As Long
Einkommenssteigerungen() As Byte
Lohnkürzungen() As Byte
JobBeginn As Long
Krankheit() As udtKrankheit
End Type

Private Type udtKrankheit
KrankheitVon As Long
KrankheitBis As Long
End Type

Durschnittlich sieht das Ganze befüllt dann ungefàhr so aus (die Anzahl
der Elemente ist in Klammern geschrieben):

udtÜbersicht.Kategorien(100).Personen(1000).Einkommensteigerungen(40)
udtÜbersicht.Kategorien(100).Personen(1000).Krankheiten(3)

Diese Daten kommen eigentlich aus einer Datenbank.

Ich muss z. B. so schnell wie möglich auf die udtKategorie
(WohnortIDT, BerufIDw) und alle seine Mitglieder zugreifen können,
bzw. sie in einem Array durchlaufen und damit weiterarbeiten können.

Ein Befüllen von UDTs aus der Datenbank zur Laufzeit kommt nicht in
Frage, weil ich mit den entsprechenden UDTs weiterarbeiten muss, und ein
Befüllen der UDTs aus der Datenbank dauert viel zu lange.
Ich habe deshalb das UDT auf die Festplatte gespeichert.
Das geht auch gut, aber das Laden dauert zu lange (ca. 10 Sekunden).

Gibt es eine Methode, mit der man so ein auf der Festplatte
gespeichertes UDT so laden kann, dass man nur genau dasjenige Element
kriegt, das man braucht, falls ihr versteht, was ich meine?

Ich kann leider nicht für jedes udtKategorie eine eigene Datei anlegen.

Ich weiß nicht, ob ich mein Problem überhaupt so beschrieben habe, dass
es jemand versteht...

Liebe Grüße,

Hermann
 

Lesen sie die antworten

#1 Wolfgang Enzinger
09/11/2011 - 00:23 | Warnen spam
Hermie wrote:

Ein Befüllen von UDTs aus der Datenbank zur Laufzeit kommt nicht in
Frage, weil ich mit den entsprechenden UDTs weiterarbeiten muss, und ein
Befüllen der UDTs aus der Datenbank dauert viel zu lange.
Ich habe deshalb das UDT auf die Festplatte gespeichert.
Das geht auch gut, aber das Laden dauert zu lange (ca. 10 Sekunden).



Also *beides* dauert zu lange. Ich nehme an, das Befüllen aus der DB dauert
signifikant lànger? Vielleicht könnte man da ja was an der Abfrage-Strategie
optimieren?

Gibt es eine Methode, mit der man so ein auf der Festplatte
gespeichertes UDT so laden kann, dass man nur genau dasjenige Element
kriegt, das man braucht, falls ihr versteht, was ich meine?



Schwierig, weil du einige Members variabler Lànge drinhast, so dass man den
Offset zum gewünschten Element nicht einfach ausrechnen kann; vielmehr muss
man sich von Datensatz zu Datensatz hangeln, bis man beim Gewünschten
angelangt ist. Da hàtte eine DB mit passenden Indizes u.U. dann doch Vorteile.

Hàngt aber von vielem ab, u.a. der konkreten Datenbank oder besser gesagt dem
Verbindungstyp.

Ich weiß nicht, ob ich mein Problem überhaupt so beschrieben habe, dass
es jemand versteht...



Glaube schon. :-)

Viele Grüsse,
Wolfgang
http://www.enzinger.net

Ähnliche fragen