AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ClientDataSet - wie kann man Indizes verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

ClientDataSet - wie kann man Indizes verwenden?

Ein Thema von globetrotter77 · begonnen am 29. Jan 2009 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 8 von 10   « Erste     678 910      
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#71

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 2. Feb 2009, 19:16
Schau dir mal bitte im ClientDataSet die Eigenschaft PacketRecords an. Setzte dort mal einen Wert von z.B. 1000 ein und versuche dein Glück...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#72

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 07:14
Hallo,

warum soll das Einbinden kompliziert sein.

in FormCreate

Delphi-Quellcode:
ZConnection:= TZConnection.Create;
  ZCopnnection. blabla
ZQuery:= TZQuery.Create(Self); // TZQuery oder wie das dingens heisst
ZQuery.Connection:= ZConnection;

DBGrid.DataSource.DataSet:= ZQuery.
Du kannst das dann einfach nicht grafisch zusammenklicken,
aber sonst geht es.
Ist halt etwas Tipperei.
Aber alles, was im Object-Inspector setzbar ist, geht auch per Code.

In den Videos zu den Turbos hier
ist ein Bsp. (Indy-Komponente ?).


Heiko

[edit=mkinzler]Delphi-Tags please Mfg, mkinzler[/edit]
Heiko
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#73

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 16:43
Zitat von omata:
Schau dir mal bitte im ClientDataSet die Eigenschaft PacketRecords an. Setzte dort mal einen Wert von z.B. 1000 ein und versuche dein Glück...
Und?
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#74

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 18:40
Zitat von omata:
Schau dir mal bitte im ClientDataSet die Eigenschaft PacketRecords an. Setzte dort mal einen Wert von z.B. 1000 ein und versuche dein Glück...
Hallo,
ich bin leider die ganze Zeit nicht dazu gekommen, das auszuprobieren, aber jetzt habe ich das mal getan.
Ergebnis:
Schaut auf den ersten Blicksehr gut aus, wenn's darum geht, die Zeitdauer fürs Öffnen zu reduzieren.
Und es ist nicht einmal nötig, die nächsten Packets explizit abzuholen mit GetNextPacket ... wenn man z.B. ans Ende geht, ist das implizit mit dabei.

Aber leider geht das dann auf Kosten der Laufzeit.
Während der Open mit allen Datensätzen noch 6 Sekunden benötigt hat (was mir durchaus ok und akzeptabel erscheint!), geht es jetzt schneller als 1 Sekunde.
Aber beim Sprung ans Tabellenende braucht er dann ca. 17 Sekunden.
Ist ja auch klar: es dauert einfach länger, jedes Päckchen einzeln zu verpacken, zu verschnüren und zu beschriften, als alles einfach in ner Gitterbox zu stapeln und einen gemeinsamen Adressaufkleber draufzupatschen.

Und was noch schlimmer ist: die ersten 1000 Datensätze sind dann nicht mehr sichtbar, d.h. nicht mehr Teil der Datenmenge.
Um Zufälle auszuschließen, habe ich das auch mit ner anderen PacketRecords-Einstellung probiert, nämlich 2407. Gleiches Ergebnis, es sind 2407 Datensätze weniger da.

Und nur mal ins Blaue hinein gesprochen, wage ich die Prophezeiung, dass jetzt die Umsortierung noch deutlich länger dauern wird.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#75

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 18:45
Konnte es nicht lassen und habe das mit der Sortierung auch noch gecheckt:
Dauert 54 Sekunden ... schaut fast so aus, als würde er nach jedem Päckchen neu einsortieren.
Mit PacketRecords=-1 hat es 20 Sekunden gedauert.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#76

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 19:01
Komisch, ich habe hier keine Probleme damit. Naja war ein Versuch.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#77

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 3. Feb 2009, 19:05
Zitat von omata:
Komisch, ich habe hier keine Probleme damit. Naja war ein Versuch.
Nun ja, ich habe eben eine Tabelle mit knapp über 100000 Datensätzen, da schaut es vielleicht anders aus. Die Sache mit den verschwundenen Datensätzen lässt sich zwar wahrscheinlich ausmerzen, aber die Laufzeit wird wirklich nicht besser dadurch.
Übrigens, die angekündigte Reaktion bei PacketRecords=0, dann nur Metadaten zu schicken, klappt leider auch nicht.

Aber klar, einen Versuch war es allemal wert!
Und danke für die Mühe, da rumzuforschen!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#78

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 00:29
Ich habe das jetzt mal mit 500000 Datensätzen getestet. Meine Datenbank ist 114MB groß. Die Anwendung benötigt dann 320MB (Peak: 380MB) Arbeitsspeicher. Das Laden dauerte 45 Sekunden.
Wieviel Arbeitsspeicher hat dein System (bist du schon im Swap?) und wieviel möchtest du, das deine Anwendung an Arbeitsspeicher benötigt? Ist dir das völlig egal?
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#79

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 01:14
nein, das ist mir nicht egal, aber es ist nun mal so, dass man immer dann, wenn man eine Anwendung auch weitergeben will, evtl. auch mal mit miesen Rechnern zu tun hat.
(meiner ist auch nicht so toll, zugegeben!)
Aber der Vergleich zwischen verschiedenen Zugriffsszenarien ist natürlich trotzdem möglich, wenn man immer den selben Rechner nimmt.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#80

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 01:19
Ich habe den gleichen Test jetzt nochmal mit MSSQL durchgeführt und komme auf das selbe Ergebnis. 45 Sekunden für 500000 Datensätze. Also Firebird ist top.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 10   « Erste     678 910      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 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