Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DB-Zugriff beschleunigen (https://www.delphipraxis.net/168704-db-zugriff-beschleunigen.html)

khh 5. Jun 2012 12:16

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos

DB-Zugriff beschleunigen
 
Hallo zusammen,
ich lese aus einer DB per Zugriff über Internet Daten aus einer einzelnen Tabelle.

Auf dem Sortierkriterium liegt ein Index.
Dennoch habe ich den Eindruck, dass es beim Programmstart zu lange dauert, wenn ein paar Minuten (3-5) nötig sind um ca. 50.000 DS einzulesen.
EDIT: die Maschine auf der die DB liegt ist nicht die Schnellste :-(

Hat jemand ne Idee das zu beschleunigen?

Morphie 5. Jun 2012 12:35

AW: DB-Zugriff beschleunigen
 
Musst du wirklich beim Systemstart direkt 50.000 Datensätze lesen?

Ansonsten ist das Protokoll von Firebird nicht wirklich für langsame Netze (Internet) ausgelegt...
Wie viele Spalten und was für Daten(größen) sind das denn?

khh 5. Jun 2012 12:37

AW: DB-Zugriff beschleunigen
 
muss ich nicht unbedingt, ich überlege ja gerade, wie ich es besser machen könnte.
EDIT: es handelt sich um Adressdaten mit 30 Spalten

DeddyH 5. Jun 2012 12:49

AW: DB-Zugriff beschleunigen
 
Hilft Dir das hier weiter? http://scott.yang.id.au/2004/01/limi...s-in-firebird/
So könnte man die Daten "häppchenweise" holen.

Bernhard Geyer 5. Jun 2012 13:12

AW: DB-Zugriff beschleunigen
 
Falls du bei FB die möglichkeit hast zwischen der Curserlocation (Client/Server) umzuschalten wäre evtl. das mal gut zu testen.

khh 5. Jun 2012 13:56

AW: DB-Zugriff beschleunigen
 
Zitat:

Zitat von DeddyH (Beitrag 1169573)
Hilft Dir das hier weiter? http://scott.yang.id.au/2004/01/limi...s-in-firebird/
So könnte man die Daten "häppchenweise" holen.

so hab ich mir das in etwa vorgestellt.

Alsooo

mit first 100 oder first 1000 geht der Programmstart recht zügig.
Jetzt bleibt nur die Überlegung, wo und wann ich den Rest einlese, ohne das DBgrid zu blockieren?

khh 5. Jun 2012 14:02

AW: DB-Zugriff beschleunigen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1169574)
Falls du bei FB die möglichkeit hast zwischen der Curserlocation (Client/Server) umzuschalten wäre evtl. das mal gut zu testen.

wie meinst du das ?
Unterschied zwischen Zugriff übers Internet und Zugriff local, oder was willst du wissen ?

Bernhard Geyer 5. Jun 2012 14:10

AW: DB-Zugriff beschleunigen
 
Curser Location bei MSDN

khh 5. Jun 2012 14:14

AW: DB-Zugriff beschleunigen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1169583)

ach soo

na bei Firebird könnte man mit einer stored proc arbeiten,
wenns ne bessere Möglichkeit gibt lasse ich mich gerne belehren.

ibp 5. Jun 2012 14:33

AW: DB-Zugriff beschleunigen
 
zB.: wenn es Adressdaten (Name,Vorname,Str,...etc) sind, dann mach doch vorher eine Auswahl über den Anfangsbuchtsaben des Namens oder eben ein anderes Kriterium. Ich denke du brauchst bestimmt nicht alle 50k Datensätze auf einmal, das ist ja Telefonbuchauspapierzeitalter!

khh 5. Jun 2012 14:35

AW: DB-Zugriff beschleunigen
 
Zitat:

Zitat von ibp (Beitrag 1169585)
zB.: wenn es Adressdaten (Name,Vorname,Str,...etc) sind, dann mach doch vorher eine Auswahl über den Anfangsbuchtsaben des Namens oder eben ein anderes Kriterium. Ich denke du brauchst bestimmt nicht alle 50k Datensätze auf einmal, das ist ja Telefonbuchauspapierzeitalter!

Stimmt, ist ne gute Idee


ich danke euch

p80286 5. Jun 2012 14:40

AW: DB-Zugriff beschleunigen
 
Wenn ich es richtig verstanden habe, sagt die Cursor location nur etwas darüber aus wo die Ergebnisdaten gespeichert werden. Eine Stored Proc hat also eigentlich nichts damit zu tun.

Es kann natürlich gute Gründe geben 50.000 Datensätze mit 300 Feldern einzulesen, aber das sind doch eher die Ausnahmen. Gibt es keine Möglichkeit, die Datenmenge zu beschränken?

Gruß
K-H

hat jemand den roten Kasten geklaut??

khh 5. Jun 2012 14:43

AW: DB-Zugriff beschleunigen
 
Zitat:

Zitat von p80286 (Beitrag 1169587)
Wenn ich es richtig verstanden habe, sagt die Cursor location nur etwas darüber aus wo die Ergebnisdaten gespeichert werden. Eine Stored Proc hat also eigentlich nichts damit zu tun.

Es kann natürlich gute Gründe geben 50.000 Datensätze mit 300 Feldern einzulesen, aber das sind doch eher die Ausnahmen. Gibt es keine Möglichkeit, die Datenmenge zu beschränken?

Gruß
K-H

hat jemand den roten Kasten geklaut??

mach ich jetzt über die PLZ, ich danke euch

Iwo Asnet 5. Jun 2012 14:55

AW: DB-Zugriff beschleunigen
 
Eine Alternative wäre, die Addresstabelle lokal abzulegen und periodisch Updates zu ziehen. Dann hättest Du den Vorteil einer quasi "on the fly" Recherche verbunden mit (fast) aktuellen Daten.

Wenn die Eingabe schnell gehen muss (und in der Wirtschaft muss es immer schnell-schnell gehen), hättest Du mit diesem Ansatz einen entscheidenden Wettbewerbsvorteil.

Der sicherlich am einfachsten umzusetzende Ansatz, nämlich der Datenbank anhand einer Suchmaske eine Vorauswahl treffen zu lassen, ist jedoch einfacher umzusetzen. Vergiss nur nicht, das die Auswahl hinsichtlich der maximalen Anzahl der Datensätze gedeckelt werden sollte ("SELECT FIRST 100 * FROM...")

hoika 8. Jun 2012 16:00

AW: DB-Zugriff beschleunigen
 
Hallo,

brauchst di "irgendwann" wirklich alle Datensätze,
lade sie in einem eigenen Thread in eine eigene Datenstruktur (oder ein ClientDataSet).


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.

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