![]() |
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 |
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. |
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? |
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!! |
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.
|
Re: SQL Query Performance
Zitat:
|
Re: SQL Query Performance
Zitat:
|
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 |
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. |
Re: SQL Query Performance
Zitat:
Ist das etwas von SQL ? Nur bei bestimmten Datenbanken ? |
Re: SQL Query Performance
Paging bedeutet, dass man die Imhalte stückweise holt und anzeigt z.B. 500 Stück pro Seite) und dann zwischen den Seiten blättern kann.
Aggegate: Zusammenfassung von Datensätzen |
Re: SQL Query Performance
kannst du mir ein Beipsiel für das Paging geben, ist das SQL?
|
Re: SQL Query Performance
Jein. Kann man durch die Limitierung der Datenmenge erreichen. MSSQL unterstützt m.W. das nicht direkt, man kann es aber durch Tricks erreichen:
![]() Ein Beispiel dafür ist z.B. die Startseite der DP. |
Re: SQL Query Performance
Im verlinkten Artikel fehlt der Zusatz, das die sortierte Spalte mit einem CLUSTERED INDEX versehen sein muss, damit die Sortierung nicht extra Zeit kostet. Stell Dir vor, Du willst Durch 10 Mio Datensätze blättern, und die 10Mio müssen jedesmal komplett sortiert werden. Beim CLUSTERED INDEX sind die Datensätze bereits sortiert, sodaß die SORT BY [ID-Feld] Klausel ignoriert wird
|
Re: SQL Query Performance
Hi,
kann man das Paging nur bei ASP machen oder auch bei W32 Apps? Danke |
Re: SQL Query Performance
Natürlich kann mann Paging auch mit Win32 machen. Der Link sollte nur auf das Vorgehen auf SQL-Seite hinweisen.
|
Re: SQL Query Performance
Hi,
könntest du mir ev. ein kurzes Beispiel geben? Also SQL Query weiß ich mit Top 100 zb oder so. aber wie Blättere ich ,mir wäre es am leibstzen es in 1 Grid rein zumachen,aber ohne Seitenwechsel,also das beim Scrollen neue Daten geladen werden. Wen ndas überhaupt möglich ist. habe das noch nie gemacht. Wäre dir dankbar. |
Re: SQL Query Performance
Vielleicht hilft Dir
![]() |
Re: SQL Query Performance
Hi,
leider nein. mit SQL Query ken i mich gut aus. Es geht darum das Pagin in ner W32 App auf zb. ein DBGrid hinzubekommen. danke |
Re: SQL Query Performance
Durch Verschieben des Fensters, also des 1. anzuzeigenden Datensatzes. Dabei ist es eigentlich unerheblich wie das ganze angezeigt wird. du kannst also auch beim Scrollen des Grids für das Nachladen sorgen. Hierfür sollte das fenster dann etwas größer als die angezeigte Menge sein.
|
Re: SQL Query Performance
Hi,
das wäre ja gut,kansnt du mir da ev. nen kurzes bsp geben. hab das noch nie gemacht und weiß nicht wie und wo ich am besten laden soll. danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr. |
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