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 4 von 10   « Erste     234 56     Letzte »    
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 22:44
um noch mal auf den eigentlichen Kern des Problems zurückzukommen:

1) Wieso schafft es diese ClientDataSet-Komponente nicht, auf die bereits vorhandenen Indizes zuzugreifen? Gibt es da vielleicht einen Work-Around?
2) Wieso wird es in der Hilfe so beschrieben, dass es auch persistente Indizes gibt, die also nicht weggeworfen werden beim Programmende?
Das scheint doch definitiv falsch zu sein, oder?
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 22:46
ach so, fast hätte ich es vergessen: wie schaut es eigentlich mit Queries aus?
wie kann ich sowas nutzen?
Fragen über Fragen ...
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#33

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 07:33
Also bitte, Schlüssel und Indizes (das ist schon ein bisschen was anderes als ein Schlüssel) werden auf der Tabelle erzeugt, und zwar per SQL, ein DataSet ist eine Abfragekomponente. Die Datenbank inklusive Ihrer Tabellen solltest Du schon per SQL anlegen und ändern, am Besten bevor Du Dich ans programmiern machst.

Ein Link zum Einstieg (ist zwar auf Oracle bezogen, sollte aber helfen): http://www.dba-oracle.com/art_9i_indexing.htm

Sherlock
Oliver
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#34

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 07:38
Ich hab in einem Buch über Datenbankprogrammierung ("Datenbankprogrammierung Delphi 5" M.Ebner)
folgendes gefunden:
Zitat:"Im Zeitvergleich zu TTable und BDE schnitt ADO beim Öffnen ein wenig schlechter ab (etwa 280ms zu 240 ms),
beim Aufruf des nächsten Datensatzes lagen die Zeiten gleich (etwa 11ms).
Was jedoch deutlich länger dauert, ist das Öffnen von Datenmengen zu Entwurfszeit.
Auch das Erzeugen von persistenten TField-Instanzen für alle Tabellenspalten wird zur Geduldsprobe."

Scheint tatsächlich langsamer zu sein als mit BDE.
Gruß

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#35

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 07:50
OK, dann nach dem Ausflug ins 20. Jahrhundert zurück ins 21. Die BDE ist seit Jahren nicht mehr gepflegt worden, ADO hatte dann doch noch ein paar Jahre Zeit sich zu entwickeln und hat mittlerweile die BDE hinter sich gelassen.



Edith kann mkinzler unter mir nur zustimmen.

Sherlock
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#36

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 08:05
Wobei DBMS spzifische Komponenten natürlich noch besser sind
Markus Kinzler
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 09:07
Zitat von Sherlock:
Also bitte, Schlüssel und Indizes (das ist schon ein bisschen was anderes als ein Schlüssel) werden auf der Tabelle erzeugt, und zwar per SQL, ein DataSet ist eine Abfragekomponente. Die Datenbank inklusive Ihrer Tabellen solltest Du schon per SQL anlegen und ändern, am Besten bevor Du Dich ans programmiern machst.

Ein Link zum Einstieg (ist zwar auf Oracle bezogen, sollte aber helfen): http://www.dba-oracle.com/art_9i_indexing.htm

Sherlock
mein lieber Sherlock,

was ein Dataset ist, weiß ich sehr wohl, und wie man per SQL eine Datenbank anlegt, ebenfalls.
Wenn du mal genauer nachliest, wirst du vielleicht feststellen, dass ich genau das gemacht habe bzw. machen will, und zwar, bevor ich mich ans Programmieren mache.
Es ist aber offenbar so, dass ich auf die von mir auf der Tabelle erzeugten Indizes nicht ansprechen kann.

Die Beschreibung, wie Oracle das intern organisiert, ist an dieser Stelle völlig uninteressant, da der Index einfach nicht erreichbar ist.

Ich dachte eben, dass es vielleicht doch einen Work-Around geben könnte, an einen real existierenden Index ranzukommen, weil sonst ja ein ganz wesentlicher Teil der Datenbank-Intelligenz verloren geht.
Da scheint aber leider niemand eine Lösung zu kennen.

Schade!
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#38

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 09:13
Ein Index funktioniert doch aber automatisch. Dafür ist er da. Du musst nach dem korrekten anlegen des Index nixhts mehr damit machen, die abfragen laufen dann ganz von alleine schneller. Und da liegt dann auch die wahre Intelligenz eines RDBMS, das Du nämlich eben nicht selber Indizes abfragen musst

http://de.wikipedia.org/wiki/Datenbankindex

Sherlock
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#39

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 09:32
@Sherlock: Sein Problem scheint es zu sein das die Indizes des Provider-DataSets nicht automatisch in das ClientDataSet übernommen werden
Markus Kinzler
  Mit Zitat antworten Zitat
globetrotter77

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

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 30. Jan 2009, 09:34
Zitat von Sherlock:
Ein Index funktioniert doch aber automatisch. Dafür ist er da. Du musst nach dem korrekten anlegen des Index nixhts mehr damit machen, die abfragen laufen dann ganz von alleine schneller.

http://de.wikipedia.org/wiki/Datenbankindex

Sherlock
Schön wär's!

Genau das hätte ich erwartet, aber es ist leider nicht so!
Das scheint aber ein Problem der ClientDataSet-Komponente zu sein.
Extern definierte Indizes sind einfach nicht greifbar, warum auch immer.

Einfach mal ausprobieren:
CREATE DATABASE xxx ...
CREATE TABLE yyy ...
CREATE INDEX zzz on yyy (spalte)
...

(geht mit jedem SQL-Tool auf die eine oder andere Art und Weise)

Danach neues Projekt erstellen, TSQLConnection, TSQLDataSet, TDataSetProvider, TClientDataSet anlegen und verfügbare Indizes über IndexDefs anzeigen.
Da findet sich aber nichts außer DEFAULT_ORDER und CHANGEINDEX, und die haben eine völlig andere Bedeutung.
Nun würde es mir ja nichts ausmachen, wenn ich das genau einmal aus meinem Programm herausmachen müsste, aber das ist eben auch nicht der Fall.
Stattdessen erzeugt die Komponente bei jedem Öffnen den aktuell eingestellten Index wieder neu.

Und das dauert einfach recht lange, wenn genügend Datensätze vorhanden sind ... ist ja klar!
Bei 1000 oder 10000 Sätzen fällt das zunächst mal gar nicht auf ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 10   « Erste     234 56     Letzte »    


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 19:05 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