![]() |
Re: ClientDataSet - wie kann man Indizes verwenden?
Ja, das Thema ist nicht so einfach. Ich versuche mich mit dem Thema zu beschätigen und hatte deshalb die, wie ich fand, interresanten Links angegeben.
![]() Was zeigt denn dein Ablaufplan an, werden dort Indiezes verwendet? |
Re: ClientDataSet - wie kann man Indizes verwenden?
@Thomas F und mkinzler:
Sorry, das war vielleicht ein bisschen zu flapsig hingeschmissen! Dachte, dass aus dem vorher Gesagten hervorgeht, dass der Open relativ flott geht und ich auch damit zufrieden bin (um die 10 Sekunde herum, je nach Rechner) Nur bei diesem kurzen Ausflug mit ADO dauerte es plötzlich solange, daher der Krisenanfall ... :? |
Re: ClientDataSet - wie kann man Indizes verwenden?
Zitat:
PS: Der Open dauert mir im Normalfall ja auch gar nicht zu lange, sondern die Indizes sind nicht greifbar. Ich kann sie zwar bei jedem Programmstart neu aufbauen, aber dafür brauche ich natürlich schon die ganze Tabelle. |
Re: ClientDataSet - wie kann man Indizes verwenden?
Zitat:
Es ist vorhersehbar, dass ich mit unterschiedlichen Sortierungen arbeiten muss. Deshalb sind auch verschiedene Indizes in der Datenbank definiert. Die Frage war ganz einfach: Wie kann man diese Indizes verwenden? Ich finde einfach keine Möglichkeit. Langsam, aber sicher beschleicht mich der Verdacht, dass die eingesetzte IDE einfach nicht geeignet ist hierfür. War wohl eine Fehleinschätzung, dass ich dachte, das auch mit der Turbo-Explorer-Variante machen zu können. Schade! |
Re: ClientDataSet - wie kann man Indizes verwenden?
Das liegt nicht an der IDE.
Das sieht in den einzelnen Versionen überall gleich aus. Der Ausführungsplan zeigt dir aber an, ob Firebird einen Index verwendet, dafür waren die Links, die ich angegeben habe. Naja, du wirst das schon hinbekommen. Edit: Ich habe auch verschiedene Zugriffsmethoden ausprobiert (ZEOS, dbExpress), beides gleich. Deshalb nochmal die Frage, was zeigt die Statistik der Indiezes an. Sind die überhaupt aktuell berechnet. Ich weiss jetzt kommt wieder, ich kann das in Delphi nicht auswählen... |
Re: ClientDataSet - wie kann man Indizes verwenden?
Natürlich kommt das wieder!
Ich will direkte Möglichkeiten, zuzugreifen. Abgesehen davon sehe ich auch sehr deutlich, was passiert, ohne irgendwelche Ausführungspläne zu analysieren. Wüsste allerdings auch nicht sofort, wie ich an die Ausführungspläne komme, das gebe ich zu. Aber damit könnte ich ja auch nur das aktuelle Problem ein bisschen besser einkreisen. Stattdessen denke ich eben lieber voraus und versuche, zu verstehen, wie ich grundsätzlich, also auch bei zukünftigen Projekten, vorgehen kann. PS: Wenn ich sage, dass es an der IDE liegt, meine ich damit, dass es eben doch ein ziemlicher Nachteil ist, keine Fremdkomponenten einbinden zu können (oder nur sehr umständlich). Grundsätzlich ist Turbo Delphi ein super Produkt, keine Frage! |
Re: ClientDataSet - wie kann man Indizes verwenden?
Was mir gerade noch einfällt...
Wie sollen die verschiedenen Sortierungen umgesetzt werden? Steht eigentlich der CommandTyp auf ctQuery oder auf ctTable? Wird beim Umschalten auf eine neue Sortierung eine neue Datenbankabfrage gestartet? Wenn ja, wieso ist dann ein Index in der Anwendung interressant? Dann ist doch nur wichtig, dass die Datenbank den Index kennt und ihn benutzt. |
Re: ClientDataSet - wie kann man Indizes verwenden?
Um Himmels willen, nein!
Natürlich will ich nicht jedes Mal eine neue DB-Anfrage starten. Deswegen steht der Commandtyp hierfür auch auf ctTable. Im Augenblick behelfe ich mir, indem ich die in Frage kommenden Indizes beim Design von Hand eintrage und beim Programmlauf IndexName umstelle. Geht aber, wie gesagt, immer erst bei der zweiten Benutzung des Index recht flott. Wenn ich dann in die Detailbearbeitung gehe, brauche ich natürlich auch ctQuery. |
Re: ClientDataSet - wie kann man Indizes verwenden?
Hallo,
noch mal zum verständis. Ein TClientDataSet hält eine Kopie der aktuellen Daten im Speicher. Von welcher Datenbank die Daten kommen, ist ihm egal. Man kann es auch per hand (lokal) füllen. Ein Index ist eine interne Datenstruktur, je nach DB verschieden. Aus diesem Grund kann das TClientDataSet keinen Firebird-Index benutzen. Der Weg, Indizes im TClientDataSet zu erzeugen ist der richtige Weg. Persistente Indizes machen aber keinen Sinn, die würden lokal angelegt. Wenn du in ZEOS die Query benutzt, ohne TClientDataSet, sollte es funktionieren. Ob das in der Turbo-Variante überhaupt geht, weiss ich allerdings nicht. Heiko |
Re: ClientDataSet - wie kann man Indizes verwenden?
Zitat:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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-2025 by Thomas Breitkreuz