Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Query Performance (https://www.delphipraxis.net/107679-sql-query-performance.html)

renekr 31. Jan 2008 16:17

Datenbank: SQL 2005 • Version: STD • Zugriff über: ADO

SQL Query Performance
 
Hallo,

Ich wollte mich mal erkundigen wie Ihr Größere Datensätze abfragt aus dem Programm heraus.
Ich habe zb.: 60T DS und das dauert als lang.

Ich lade diese in ein Grid rein.

Wie macht ihr das so?

Besteht zudem eine Möglichkeit eine ADOQuery oder ADOTable im Client zu sortieren,weil eine Order by auf die Performance des Servers geht.

danke

generic 31. Jan 2008 16:27

Re: SQL Query Performance
 
Performance ist relativ...

Ich habe hier paar Tabellen mit 1-2 Mio. Datensätze.
Diese lassen sich noch in 1-2 Sekunden abfragen.

Bei den Tabellen mit mehr als 10 Mio. Datensätze, dauert es etwas länger, da diese selten im Zugriff sind (nicht gecached).
30-45 Sekunden - unser SAN ist etwas langsam.

Aber wenn du Tunen willst ...
Zeichne deine Zugriffe mit dem Profiler auf und lass das analysieren.
Das M.-Studio schlägt dir dann schon andere Keys/Indexe vor, wenn notwendig.

Ansonsten viel Ram in den Server bauen, schnelle Platten nehmen mit Raid. Nicht zu vergessen sind große CPU's mit viel Cache.

[edit]
Ah - hab das mit dem Grid überlesen. Meine Angaben beziehen sich auf die Query-Performance.

Wenn du soviele Datensätze läds, solltest du den VST verwenden.

mkinzler 31. Jan 2008 16:29

Re: SQL Query Performance
 
Zu 1.) Ich würde nicht die komplette Datenmenge auf einmal fetchen. 60000 DS sind sowieso etwas viel (der Übersicht wegen)
2. erübrigt sich dann. Eigentlich ist das noch keine große Menge und sollte schnell sortiert sein.
Existieren den passende Indices?

peschai 31. Jan 2008 16:34

Re: SQL Query Performance
 
Hallo
Ist es wirklich notwendig so viele Datensätze auf einmal zu laden ?
Kannst du die Menge nicht durch sinnvolles Filtern einschränken ?
Große Datenmengen verbrauchen bei ADO auch viel RAM!!

Bernhard Geyer 31. Jan 2008 16:44

Re: SQL Query Performance
 
Verwenden für unsere Grid-Anzeigen maximal x Datensätze die per "select TOP x ..." erst gar nicht vom Server geholt werden.

peschai 31. Jan 2008 16:48

Re: SQL Query Performance
 
Zitat:

Verwenden für unsere Grid-Anzeigen maximal x Datensätze die per "select TOP x ..." erst gar nicht vom Server geholt werden.
Was meinst du damit ?

Hansa 31. Jan 2008 16:48

Re: SQL Query Performance
 
Zitat:

Zitat von renekr
Ich lade diese in ein Grid rein.

Wie macht ihr das so?

In einem Stringgrid. Faktor 10-100 schneller kann man schon alleine dadurch sein, dass das Stringgrid im Hintergrund gefüllt wird. Also nicht immer nur die DB im Verdacht haben.

renekr 31. Jan 2008 17:43

Re: SQL Query Performance
 
Hi,
das ist mir klar.
Ich lade im moment die DS in ein DBGrid rein.
Auch mit Top 10 Percent.
das sidn dan n6600 Stück.


Aber wie kann ich das ev. besser machen?
Kein DB Komponente nehmen? Query aufmachen udn in ein non DB Grid rein füllen?

Oder wie kann ich zb. das Query oder ne Table im Client sortieren.

Ich zeige bei onclick oder onchanging der DBGrid die Details an und hole zudem noch ein Bild in ein image rein von der Kennummer abgeleitet.(Das Bild ist nicht in der DB sondern auf einem Share als Kleines jpg.

Was wäre am besten?


Danke

alzaimar 31. Jan 2008 19:27

Re: SQL Query Performance
 
Niemand, aber auch wirklich niemand benötigt mehr als 1000 Datensätze im Client auf einmal. Alles lässt sich durch Paging, Filtern und Aggregate
optimal umsetzen.

Ich habe einen Kunden, der hat mit seiner Access-Applikation Monatsauswertungen der Kundenaufträge gemacht. Alle Datensätze reingesaugt und im Grid summiert. Mittlerweile hat er eine Funktion 'Zeige Monatsumsätze' und sieht die Ergebnisse für alle Kunden auf einmal. Viel schneller, viel besser, viel effektiver.

Man muss ein wenig umdenken, und dem Anwender die richtigen Werkzeuge (=vorgefertigte Reports) in die Hand drücken. Oder man bringt ihm SQL bei. Es gibt fast immer irgendwo einen Spezi, der sich dafür interessiert.

peschai 1. Feb 2008 05:16

Re: SQL Query Performance
 
Zitat:

Alles lässt sich durch Paging, Filtern und Aggregate
optimal umsetzen.
Was bedeutet Paging und Aggregate ?
Ist das etwas von SQL ? Nur bei bestimmten Datenbanken ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr.
Seite 1 von 3  1 23      

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