Entwickler-Ecke

Datenbanken - Geschwindigkeitsproblem


Aya - Fr 30.08.02 18:58
Titel: Geschwindigkeitsproblem
Hi,

ich hab ne SQL Datenbank mit 100.000 Einträgen darin welche ich per Knopfdruck in eine TListBox einlese

Quelltext
1:
ListBox1.Items.Add(Query.FieldByName('bla').Text);                    

das dauert eeeeeeewig lange... wenn ich aber zur anzeige ein DBGrid benutze sind die daten in weniger als 1 Sek im DBGrid drinne...

gibt es ne möglichkeit die auflistung in der ListBox in etwa so schnell zu machen wie im DBGrid??? (Das DBGrid kann ich nich nehmen weil es vom aussehen her absolut 0000-nicht in's Design passt..)

Au'revoir,
Aya


Arakis - Fr 30.08.02 19:02

Hi Aya, du musst wissen, dass das DBGrid vor Borland nicht alle 100.000 Einträge auf einmal liest 8)
Erst wenn du anfängst zu scrollen, werden die Daten dynamisch nachgeladen, da daduch ergibt sich ein ernormer Geschwindigkeitsvorteil.
Wie man so was in einer Listbox realisiert weiß ich leider nicht. :(

Bis dann
user defined image


Klabautermann - Fr 30.08.02 20:35

Hallo,

du solltest schon einiges an Geschwindigkeit rausholen wenn du vor dem Füllen

Quelltext
1:
Listbox1.Items.BeginUpdate;                    

und danach

Quelltext
1:
Listbox1.Items.EndUpdate;                    

aufrufst. Damit verhinderst du, das nach jedem hinzugefügten Eintrag die Listbox neu gezeichnet wird.

Gruß
Klabautermann


Cashels - Sa 31.08.02 14:10

Hi,

falls du mit MSSQL arbeiten solltest, benutze doch mal den Firehouse Cursor (CursorLocation=clUseServer, Cursortype=ctForwardOnly, Locktype=ltReadOnly). Ist für dein Fall genau das Passende und du gewinnst damit mit Sicherheit um das 20-fache an Geschwindigkeit.

Ausserdem kannst du noch dein CacheSize z.B. auf 100 setzen um noch etwas schneller durchscrollen zu können.

Die ganzen Eigenschaften beziehen sich auf TADODataset.

Gruss,
Tom