Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Auslesen einer Datenbank in Delphi dauert ewig trotz Indices (https://www.delphipraxis.net/9335-auslesen-einer-datenbank-delphi-dauert-ewig-trotz-indices.html)

endyexcellent 24. Sep 2003 13:44


Auslesen einer Datenbank in Delphi dauert ewig trotz Indices
 
Habe eine große Datenbank mit ca 10000-50000 Datensätzen. Habe einen Index gesetzt und der funktioniert auch wunderbar.
Wenn ich allerdings die Datenbank mit Delphi abrufe braucht er ewig um alle Datensätze komlett anzuzeigen. Er ignoriert also meinen in der Datenbank vorhandenen Index. Gibt es irgendeinen SQL befehl mit dem man einen bestimmten Schlüssel auf eine bestimmte Tabelle anwenden kann?

Ideen wären super. Danke.

Mfg
nadine

Memo 24. Sep 2003 18:35

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Zitat:

Zitat von endyexcellent
Habe eine große Datenbank mit ca 10000-50000 Datensätzen.

Puh, das nennst du groß?Welche Datenbank?
Zitat:

Zitat von endyexcellent
Wenn ich allerdings die Datenbank mit Delphi abrufe braucht er ewig um alle Datensätze komlett anzuzeigen.

Wie rufst du ab und wo zeigst du an?
Zitat:

Zitat von endyexcellent
Er ignoriert also meinen in der Datenbank vorhandenen Index.

Was verleitet dich zu dem Schluß?

MrSpock 24. Sep 2003 20:46

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Hallo endyexcellent,

bei Interbase gibt es das Schlüsselwort Plan, mit dem sowas möglich wäre. Welche Datenbank nutzt du denn?

endyexcellent 25. Sep 2003 08:43

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Hihi. Danke für Eure Hinweise. Ich muss gestehen ich habe gerade erst angefangen mit Datenbanken und Delphi. Deshalb kenne ich mich so gut wie nicht aus.

Ich arbeite mit Firebird, sprich interbase.
Ich zeige meine Datenbank in Delphi mit DBGrid an.
Rufe sie ab mit Database, Dataset und habe noch eine Transaction.

Memo 25. Sep 2003 11:00

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Arbeitest du zufällig mit XP.
Dann hätte ich folgenden Vorschlag:
Zitat:

Läuft Interbase unter Windows XP sehr langsam liegt dies an einer unglücklichen Einstellung einer neuen Funktion
von Windows XP - dem "Windows XP System Restore". Die Einstellung veranlasst das System bei bestimmten
Dateien ( z.B. *.doc , *.txt usw. ) vor jeder Änderung dieser eine Kopie zu erstellen.

Leider sind in die Liste der entsprechenden Dateien auch die Interbase-Datenbank-Dateien mit der Endung "*.gdb"
aufgenommen worden. Diese Einstellung verlangsamt Interbase - Programme beträchtlich.

Lösung 1 : Entfernen der Endung "*gdb" aus der Liste der "gewarteten" Dateien.
Im Verzeichnis C:\Windows\System32\Restore befindet sich die Datei Filelist.xml. Diese kann man mit einem
Texteditor öffnen und die Zeile <REC>gdb</REC> entfernen.

Lösung 2 : Ausschalten des System-Restores insgesamt oder für ein bestimmtes Laufwerk.
Gehen Sie auf Arbeitsplatz und betätigen Sie die linke Maustaste. - Wählen Sie den Eintrag Einstellungen. Ändern Sie die Recovery-Einstellung im Ordner Systemwiederherstellung.

Von diesem Problem ist nicht nur Interbase sondern auch so manch andere Anwendungen betroffen. Für diese können die dargestellten Lösungen ebenfalls angewendet werden.

Sonst wüsste ich ohne das Programm und die Struktur der DB zu sehen auch nicht weiter.

endyexcellent 25. Sep 2003 11:11

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Hmmm. Ich glaube nicht, dass das am OS liegt.
Ist doch wurscht welche Datenbank gemeint ist, dauern sicher alle mit einigen tausenden oder millionen Datensätzen vollgestopften DB, menge Zeit bis sie vollständig angezeigt werden. Setzt man allerdings einen Index geht sollte das Ruck Zuck funktionieren, da er ja nur ein wenigstel der Datensätze durchsuchen muss.

Ich blick nicht mehr durch.

Memo 25. Sep 2003 13:34

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Zitat:

Zitat von endyexcellent
Hmmm. Ich glaube nicht, dass das am OS liegt.

Aha, du glaubst. Wissen tust du es nicht. Aber wenn du meinst, wird es wohl so sein.

Zitat:

Zitat von endyexcellent
Ist doch wurscht welche Datenbank gemeint ist, dauern sicher alle mit einigen tausenden oder millionen Datensätzen vollgestopften DB, menge Zeit bis sie vollständig angezeigt werden.

Na warum fragst du dann überhaupt. Und seid wann ist es wurscht welche DB gemeint ist. Du weist nicht wovon du redest.

Zitat:

Zitat von endyexcellent
Setzt man allerdings einen Index geht sollte das Ruck Zuck funktionieren, da er ja nur ein wenigstel der Datensätze durchsuchen muss.

Ebend hast du noch gesagt, das es eine Meng Zeit verbraucht. Wie kommst du nur darauf, das ein Index ein Allheilmittel ist und woher soll der Index in der Ergebnismenge kommen?

Zitat:

Zitat von endyexcellent
Ich blick nicht mehr durch.

Ich auch nicht.

Ich hab mir eben mal eine Tabelle mit knapp über 50000 Einträgen erstellt. Lasse sie zum Programmstart im DBGrid anzeigen. Was soll ich sagen, ich kann so schnell nicht hinterher schauen.

Arbeitest du mit Join's oder wird deine Ergebnismenge sortiert?

endyexcellent 25. Sep 2003 13:42

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Aaaalso. Ich will hier niemanden angreifen. Du weißt sicher wovon du redest@Memo.

Ich habe eine Datenbank, sagen wir mal eine Rechnungsdatenbank.
Nun gebe ich diese aus in meinem Delphi Programm. Möchte ich jetzt alleRechnungen rausfiltern die einen höheren Betrag als z.Bsp.: 2000€ betragen. Nun habe ich ca 500000 Rechnungen oder meinetwegen 1Million.
Jetzt sucht meine Datenbank von oben nach unten alle ab und zeigt sie dann an. Setze ich aber einen Index auf den Betrag, dann durchläuft meine Datenbank doch ganz wenige Schritte bis sie ihre Datensätze gefunden hat.

Ich habe also diesen Index gesetzt. Er funktioniert auch innerhalb meines IB Expert, da kann ich auch kaum nachschaun so schnell listet die DB meine Sätze auf. Aber das funktioniert nicht, wenn ich meine DB über mein Delphi Prog im DBGrid aufrufe. Wieso nicht?

Memo 25. Sep 2003 14:19

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Kannst du deinen Select-Befehl mal hier einstellen.
Falls diese DB nicht unter Staatsgeheimnis fällt, kannst du sie ja mal gezippt anhängen.

MrSpock 25. Sep 2003 18:39

Re: Auslesen einer Datenbank in Delphi dauert ewig trotz Ind
 
Hallo endyexcellent,

du solltest die IBX Komponenten nutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz