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 10 von 10   « Erste     8910   
omata

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 13:37
Zitat von globetrotter77:
...wenn ich mich hinterher wieder so blöd anreden lassen darf.
Sorry, das wollte ich nicht. Werde mich jetzt hier ausklinken.
Wünsche dir aber noch viel Erfolg mit deinem Vorhaben.
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 14:49
Vielleicht klappt das in Firebird auch, kann schon sein, zumindest werden sie es sicher früher oder später integrieren, davon gehe ich aus.
Die Syntax ist halt leider kein Standard-SQL, und so macht es jeder ein bisschen anders.
Siehe Wiki-Artikel zu MySQL ...
Aber das will ich ja auch gar nicht benutzen ...
Ich stelle nur fest, dass merkwürdige Phänomene auftreten, die überdeutlich zeigen, dass die vorhandenen Indizes bei der Abfrage NICHT genutzt werden.
Auch, wenn es keiner glauben will!
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 14:51
Zitat von omata:
Sorry, das wollte ich nicht. Werde mich jetzt hier ausklinken.
Wünsche dir aber noch viel Erfolg mit deinem Vorhaben.
Du warst auch nicht persönlich gemeint!
Und auch sonst war niemand persönlich gemeint ... ich hoffe, es hat sich niemand auf den Schlips getreten gefühlt ...
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#94

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 15:09
Hallo globetrotter77,

Zitat von Sherlock:
Um meinen Horizont zu erweitern, wäre ich dankbar für ein Beispiel.
Das kann ich nur Unterstützen!!!!!!
Ohne ein Beispiel drehen wir uns hier im Kreis und kommen zu keiner vernünftigen Lösung.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#95

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 15:15
Also ich hab mein Beispiel bekommen, und muss neidlos anerkennen, daß der Globetrotter mehr gesehen hat als ich.

Allein, helfen kann ich ihm nicht.

Sherlock
Oliver
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 15:28
@Chemiker:
Sherlock meinte ein Beispiel, wie man einen konkreten Index verwenden kann.
Siehe dazu oben erwähnte Links zu den sogenannten Hints in Oracle.
Damit kann man ganz gezielt Suchstrategien einstellen, von denen Oracle eben keine Ahnung hat,
man kann festlegen, über welchen Index gesucht wird etc.,
man kann sogar den Optimizer komplett abschalten und einen Full-Table-Scan durchführen und, und, und ...

Kann gut sein, dass es bei Firebird auch so was Ähnliches gibt, womit man dann einen Work-Around um mein Problem schaffen kann.
Aber das ist doch nicht der Punkt!
Mein entdecktes Phänomen ist eine völlig andere Sache, aber das habe ich schon zig-mal beschrieben!
Und ich denke mal, dass das mit den speziellen Methoden eines ClientDataSet zu tun hat, da weist schließlich alles drauf hin.
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 15:29
Zitat von Sherlock:
Also ich hab mein Beispiel bekommen, und muss neidlos anerkennen, daß der Globetrotter mehr gesehen hat als ich.

Allein, helfen kann ich ihm nicht.

Sherlock
UFF! DANKE! Endlich sieht's einer, was ich meine!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#98

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 15:43
Hallo,

irgendwie hab' ich den Eindruck, dass es hier im Kreis geht.

Ein ClientDataSet holt sich einmal die Daten aus der Datenbank und hält sie lokal vor. Ihm ist es sch...egal, was für ein Index auf der Datenbank liegt und wenn dort 50 Indizes sind, ist ihm das auch egal. Er verwaltet die Daten auf dem Client (wie sein Name sagt).
Wird ein Index benutzt, so muss der auf dem Client zuerst einmal erstellt werden, das passiert dann, wenn er das erste mal benutzt wird (was ja weiter oben durch die Beschreibung der Verhaltensweise des Programmes/ClientDataSets bestätigt wurde).

Zitat von Delphi 7-Hilfe:
TClientDataSet
Beschreibung

Das Objekt TClientDataSet repräsentiert eine Datenmenge im Arbeitsspeicher. Sie kann folgendermaßen eingesetzt werden:

Als voll funktionsfähige, dateibasierte Stand-alone-Datenmenge in einschichtigen Datenbankanwendungen. In dieser Form stellt die Client-Datenmenge die in einer bestimmten Datei auf der Festplatte des Benutzers gespeicherten Daten dar.
Als lokaler Speicherpuffer der Datensätze einer anderen Datenmenge. Die andere (Quell-) Datenmenge kann sich in demselben Formular oder Datenmodul wie die Client-Datenmenge befinden (beispielsweise bei Client-Datenmengen, die die Unterstützung für die Navigation und Bearbeitung von Daten aus einer unidirektionalen Datenmenge bereitstellen). Wenn die Client-Datenmenge den Client-Bereich einer mehrschichtigen Datenbankanwendung unterstützt, kann sich die Quelldatenmenge auch auf einem separaten System befinden.

Hinweis: Die beiden oben beschriebenen Funktionen schließen sich nicht gegenseitig aus. Eine Anwendung kann für den Offline-Betrieb mithilfe des "Aktenkofferprinzips" entworfen werden. Im Online-Betrieb kommuniziert die Anwendung über das TClientDataSet-Objekt mit dem der Quelldatenmenge zugeordneten Datenbank-Server. Wenn ein Benutzer offline arbeitet, schreibt die Client-Datenmenge eine Momentaufnahme des Datenbestandes auf die lokale Festplatte. Die Client-Datenmenge wird dann wie eine dateibasierte Datenmenge in einer einschichtigen Anwendung verwendet.

Wenn eine Client-Datenmenge Daten aus einer anderen Datenmenge repräsentiert, erfolgt die Kommunikation mit dieser Datenmenge über einen Datenmengen-Provider. Die Client-Datenmenge kommuniziert mit diesem Provider über die IAppServer-Schnittstelle. Wenn sich der Provider in demselben Formular oder Datenmodul wie die Client-Datenmenge befindet, wird die IAppServer-Schnittstelle vom einem verborgenen Objekt automatisch implementiert. Wenn die Client-Anwendung dagegen Teil einer mehrschichtigen Anwendung ist, übergibt die Client-Datenmenge alle Aufrufe für den Provider über eine IAppServer-Schnittstelle des Remote-Datenmoduls.
Zitat von Delphi 7-Hilfe:
Client-Datenmengen
Client-Datenmengen sind spezialisierte Datenmengen, die alle ihre Daten im Speicher vorhalten. Die Funktionen zur Bearbeitung der von ihnen im Speicher vorgehaltenen Daten werden durch MIDASLIB.DCU oder MIDAS.DLL bereitgestellt. Das Format, in dem die Client-Datenmengen ihre Daten ablegen, ist in sich abgeschlossen und einfach zu transportieren, wodurch Client-Datenmengen Folgendes ermöglichen:

Aus dedizierten Dateien lesen und in diese schreiben und auf diese Weise als dateibasierte Datenmenge dienen. Eigenschaften und Methoden, die diesen Mechanismus unterstützen, sind unter Eine Client-Datenmenge mit dateibasierten Daten verwenden beschrieben.
Aktualisierungen für Daten von einem Datenbankserver zwischenspeichern. Die Funktionsmerkmale von Client-Datenmengen, die zwischengespeicherte Aktualisierungen unterstützen, sind unter Mithilfe einer Client-Datenmenge Aktualisierungen zwischenspeichern beschrieben.

Die Daten im Client-Teil einer mehrschichtigen Anwendung repräsentieren. Damit der Client-Datenmenge dieses Verhalten möglich ist, muss sie mit einem externen Provider zusammenarbeiten, wie unter Eine Client-Datenmenge mit einem Provider verwenden beschrieben. Weitere Informationen zu mehrschichtigen Datenbankanwendungen finden Sie unter Mehrschichtige Anwendungen erstellen.
Die Daten von einer anderen Quelle als einer Datenmenge repräsentieren. Weil eine Client-Datenmenge die Daten von einem externen Provider bezieht, können spezialisierte Provider eine Vielzahl von Informationsquellen für Client-Datenmengen bereitstellen. Beispielsweise können Sie einen XML-Provider verwenden, um einer Client-Datenmenge zu ermöglichen, die Informationen aus einem XML-Dokument zu repräsentieren.

Gleichgültig, ob Sie Client-Datenmengen für dateibasierte Daten, zwischengespeicherte Aktualisierungen, Daten von externen Providern (wie beispielsweise bei der Arbeit mit einem XML-Dokument oder in einer mehrschichtigen Anwendung) oder eine Kombination dieser Ansätze wie beispielsweise in einer “Aktenkoffermodell”-Anwendung einsetzen – in allen diesen Fällen können Sie den großen Funktionsbereich nutzen, den Client-Datenmengen für die Arbeit mit Daten bereitstellen.
Zitat von globetrotter77:
Ich stelle nur fest, dass merkwürdige Phänomene auftreten, die überdeutlich zeigen, dass die vorhandenen Indizes bei der Abfrage NICHT genutzt werden.
Auch, wenn es keiner glauben will!
Nein, natürlich werden die Indizes der Datenbank nicht genutzt, die Datenmenge wird im ClientDataSet ja auch losgelöst von der Datenbank verwaltet. Wie soll der ClientDataSet denn 'nen Index der Datenbank verwenden, wenn Client die Daten im eigenen Arbeitsspeicher verwaltet? Wie soll denn ein Index der Datenbank sinnvoll genutzt werden, wenn der Client die Daten selbständig in seinem Arbeitsspeicher verändern kann? Soll die Datenbank dann für Dich 'nen zusätzlichen Index verwalten, der auf Deine Daten im Arbeitsspeicher passt, während andere Nutzer der Datenbank den Index für die in der Datenbank enthaltenen Daten nutzen?
Wenn Du die Daten bewusst seperat von der Datenbank benutzt, kannst Du von der Datenbank nicht erwarten, dass sie Dir die mit der Verwaltung der Daten verbundene Arbeit abnimmt.

Im ClientDataSet kannst Du die Daten auch noch nach Herzenslust verwalten, wenn der Server längst geplatzt ist, durch Stromausfall untätig wird, Du die Netzverbindung Deines Rechners mit der Axt durchhaust...
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 4. Feb 2009, 17:50
was ist denn das für ein arroganter Kommentar?
nichts anderes habe ich beschrieben ... wer lesen kann, ist klar im Vorteil, kann ich da nur sagen!
aber unglaublich, in was für einem Ton man hier abgekanzelt wird
und dann schon wieder all die blödsinnigen Unterstellungen, was ich mir alles einbilde und was ich unverschämterweise erwarte etc.
so ein Quatsch!
und was für ne Frechheit zugleich ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 10   « Erste     8910   


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 20:20 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