Delphi-PRAXiS
Seite 9 von 10   « Erste     789 10      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ClientDataSet - wie kann man Indizes verwenden? (https://www.delphipraxis.net/128397-clientdataset-wie-kann-man-indizes-verwenden.html)

globetrotter77 4. Feb 2009 01:26

Re: ClientDataSet - wie kann man Indizes verwenden?
 
sage ich doch!
mit dem Ergebnis beim Open bin ich durchaus zufrieden ... :-D
was mir nicht passt, ist, dass die per SQL-Tool erstellten Indizes scheinbar nicht verwendbar sind, jedenfalls nicht mit nem ClientDataSet ... und das ist sehr ärgerlich! Wozu definiere ich sie denn dann?

omata 4. Feb 2009 01:32

Re: ClientDataSet - wie kann man Indizes verwenden?
 
Das ist aber egal, Indiezes sind innerhalb der Datenbank vorhanden und werden nur von dieser benutzt. Die Indiezes sind erstmal völlig hupe, es müssen MB an Daten erstmal in deine Anwendung gepumpt werden, da ist der Index wurscht. Der Flaschenhals besteht nunmal zwischen Festplatte und Arbeitsspeicher. Und selbst wenn die Daten dann endlich vorliegen, ist ein Umsortieren in deiner Anwendung nicht sinnvoll, bei so vielen Daten. Deshalb auch mein Versuch mit dem eingeschränkten Fetch. Dann kann der Benutzer anfangen zuarbeiten, wieso muss er alle 500000 Datensätze sehen, reicht es nicht wenn er sie bearbeiten kann? Realisiere die Sortierung über einzelne, neue Abfragen und nicht über deine Anwendung. Das bringt bei dieser Datenmenge einfach keinen Vorteil, da bist du schneller im Swap als dir lieb ist und dann wird es richtig langsam.

globetrotter77 4. Feb 2009 01:56

Re: ClientDataSet - wie kann man Indizes verwenden?
 
Zitat:

Zitat von omata
Das ist aber egal, Indiezes sind innerhalb der Datenbank vorhanden und werden nur von dieser benutzt.

Also mit Verlaub, das halte ich für nen ziemlichen Unfug! Natürlich gibt es Sinn, einen vorhandenen Index gezielt zu nutzen, wenn man der Einzige ist, der weiß, wozu dieser Index angelegt wurde.
Zitat:

Die Indiezes sind erstmal völlig hupe, es müssen MB an Daten erstmal in deine Anwendung gepumpt werden, da ist der Index wurscht. Der Flaschenhals besteht nunmal zwischen Festplatte und Arbeitsspeicher.
Um Himmels willen, wie oft soll ich das denn noch betonen, dass der Flaschenhals gar kein so schlimmer ist ... das Open macht keinerlei Probleme!
Zitat:

Und selbst wenn die Daten dann endlich vorliegen, ist ein Umsortieren in deiner Anwendung nicht sinnvoll, bei so vielen Daten.
Das zu beurteilen, ohne zu wissen, worum es geht, halte ich für sehr gewagt!
Zitat:

Deshalb auch mein Versuch mit dem eingeschränkten Fetch. Dann kann der Benutzer anfangen zuarbeiten, wieso muss er alle 500000 Datensätze sehen, reicht es nicht wenn er sie bearbeiten kann?
Wow! Message angekommen? Es geht nicht um Einzelsatzbearbeitung, sondern um intelligente Massenbearbeitung.
Die Bearbeitung besteht unter anderem darin, durch raffinierte Umsortierung und passende Filterung einen ganzen Schwall von Sätzen auf einmal bearbeiten zu können. Welches die passende Sortierung bzw. Filterung ist, wird aber kein Computer dieser Welt bestimmen können, sondern dafür braucht es ein bisschen Sachverstand und eben auch eine Sichtprüfung, sonst geht gar nichts!
Ganz abgesehen davon, habe ich auch schon mehrfach betont, dass 500000 eher die Ausnahme sind, auch wenn sie vorkommen können.
Zitat:

Realisiere die Sortierung über einzelne, neue Abfragen und nicht über deine Anwendung. Das bringt bei dieser Datenmenge einfach keinen Vorteil, da bist du schneller im Swap als dir lieb ist und dann wird es richtig langsam.
Auch das ist nicht richtig! Ich bin nicht im Swap und gerate auch nicht in den Swap, sondern die Anwendung wird sogar schneller ab der zweiten Verwendung einer jeden möglichen Sortierung. Sinnvoll wäre es, bereits bei der ersten Sortierung die ja bereits vorhandenen Indizes verwenden zu können ... es ist mehr als ärgerlich, dass die Anwendung immer zum Programmstart erst einmal langsam ist (wohlgemerkt, NACH dem Open) ... das ist einfach so!

Sherlock 4. Feb 2009 07:19

Re: ClientDataSet - wie kann man Indizes verwenden?
 
Zitat:

Zitat von globetrotter77
Zitat:

Zitat von omata
Das ist aber egal, Indiezes sind innerhalb der Datenbank vorhanden und werden nur von dieser benutzt.

Also mit Verlaub, das halte ich für nen ziemlichen Unfug! Natürlich gibt es Sinn, einen vorhandenen Index gezielt zu nutzen, wenn man der Einzige ist, der weiß, wozu dieser Index angelegt wurde.

Mehrfache Wiederholung macht eine Aussage nicht richtig (ich rufe mal zurück, wie es reinschallt ;) )
Der Index ist IN der Datenbank, er bleibt IN der Datenbank, er wird verwendet VON der Datenbank. Das einzige, was bei einem Index unter Deiner Kontrolle liegt ist die Definition des Index, das habe ich aber auch schon vor ein paar Tagen geschrieben. ein Index wird in keinem RDBMS der WElt direkt angesprochen, wie soll den das SQL dafür aussehen?
SQL-Code:
select UserID, Name, Vorname from Users
where UserID > 10
order by Name
using INDEX MybestSortIndex
Ne, so nicht.

Sherlock

globetrotter77 4. Feb 2009 10:49

Re: ClientDataSet - wie kann man Indizes verwenden?
 
@Sherlock:

Selbstverständlich gibt es in anderen Welten Möglichkeiten, sich das auszusuchen, wenn auch mit einer anderen Syntax, vielleicht sogar bei Firebird, das habe ich aber noch nicht herausgefunden.
Aber auch das ist es ja nicht, was ich will.

Doch langsam, aber sicher, bin ich es leid, noch mal zu erklären, was ich meine, wenn ich mich hinterher wieder so blöd anreden lassen darf.
Ich werde es schon noch rausfinden.

Sherlock 4. Feb 2009 11:10

Re: ClientDataSet - wie kann man Indizes verwenden?
 
Um meinen Horizont zu erweitern, wäre ich dankbar für ein Beispiel. Ehrlich. Ich hab ja nur mit Oracle und Ingres zu tun gehabt bisher. Da gibt es sowas halt nicht.

Sherlock

globetrotter77 4. Feb 2009 11:16

Re: ClientDataSet - wie kann man Indizes verwenden?
 
@Sherlock:

Wie bitte? Gerade bei Oracle gibt es doch z.B. die Möglichkeit, mit Hints zu arbeiten.
Kennst du die echt nicht? Ein echter Sherlock sollte doch ALLEN Hints nachgehen! :-D
Um nicht falsch verstanden zu werden, ich bin nicht der Meinung, dass die immer nur toll sind, aber es geht sehr wohl.

globetrotter77 4. Feb 2009 11:19

Re: ClientDataSet - wie kann man Indizes verwenden?
 
ich habe den Artikel zwar nicht komplett gelesen, aber hier wirst du vielleicht fündig:
Hints für Oracle

globetrotter77 4. Feb 2009 11:22

Re: ClientDataSet - wie kann man Indizes verwenden?
 
und noch ein Link zum Thema bei Wiki:
Hints (SQL)

Sherlock 4. Feb 2009 11:33

Re: ClientDataSet - wie kann man Indizes verwenden?
 
OHA! Danke für die Erleuchtung!
:shock:
Und damit klappt das in Firebird nicht?
:wall:
Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 9 von 10   « Erste     789 10      

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