Vorgehensweise bei Unique Index

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Vorgehensweise bei Unique Index

Beitrag von Jan »

Dann sollten wir das auf der DevCon machen. Der Chat im April fällt aus, weil wir da ja gerade erst aus Isernhagen zurück sind. Das wird dann etwas viel für den Monat.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Vorgehensweise bei Unique Index

Beitrag von Markus Walter »

Hi Tom,

Deine Ausführungen sind durchaus verständlich. Ich glaube aber nicht, dass Alaska da was ändern wird. Dazu müsste ja wirklich in bestimmten Situationen (nämlich wenn ein Datensatz aus dem Unique-Index fliegt) eine komplette Sichtung der Daten in der DBF erfolgen, um festzustellen, ob es einen weiteren Kandidaten gibt, der nun "nachrücken" könnte. Das ist Laufzeittechnisch sicher mehr als problematisch. Oder es müssten gleich alle Datensätze im Unique-Index enthalten sein und nur durch die "Navigation" das unique generiert werden (ähnlich wie beim Scope).

PS: Ich habe es einfach. Ich verwende Unique-Indexe nur temporär (durchaus für von Dir genannte Beispiele).
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Vorgehensweise bei Unique Index

Beitrag von Tom »

Hallo, Markus.

Das Problem sehe ich ebenfalls, wie ich ja auch mehrfach erwähnt habe. Georg hat es veranschaulicht: Der Unique-Index "sieht" eben nur einen Teil der Datensätze. Bei Änderungen oder Ergänzungen ist das unproblematisch, aber bei Löschungen müsste eben die komplette Datenquelle gesichtet werden, was bei einigen tausend Datensätzen ziemlich haarsträubend werden könnte. Implizite Mechanismen (der Index enthält doch alle Datensätze, aber die Engine überspringt sie) wären keine Lösung, denn dann wäre ja nicht mehr der Index selbst "unique".

Ich kann aber mit diesem - nunmehr bekannten - Fehlverhalten umgehen. Dank an Jan dafür, dass er das Problem entdeckt hat! =D>
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Vorgehensweise bei Unique Index

Beitrag von brandelh »

Am Besten wäre eine Erweiterung durch ein Flag, mit dem ein normaler Index die doppelten Sätze automatisch überspringt.
So könnte man sich einen Index sparen, alle Probleme wären beseitigt und dennoch würden die alten Programme genauso weiterlaufen wie sie sind ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Vorgehensweise bei Unique Index

Beitrag von Manfred »

Hm,

wäre es bei einem Flag nicht so, dass die doppelten übersprungen werden müßten? Das käme doch einem Filter gleich, oder? Das frisst doch Zeit? In einem Unique ist ja immer nur max. 1 Satz vorhanden, da muß nicht gesprungen werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Vorgehensweise bei Unique Index

Beitrag von brandelh »

Hallo Manfred,

ein Filter ist nicht automatisch langsam !
Langsam ist er nur, wenn er sehr viele Datensätze ohne Treffer überspringen muss.
Ich nutze gerne einen Hauptindex der die Daten begrenzt (auch mit scope) und dann darin einen Filter für komplexere Aufgaben.

Wie wäre es bei dem geschilderten Problem ?
Wahrscheinlich ist es eher selten, dass viele Datensätze den gleichen Indexkey haben, diese liegen auch sortiert hintereinander UND
die DBE könnte nach dem ersten Treffer einen dbseek() auf den Datensatz mit einem höheren Indexbegriff vornehmen.
Die Performance wäre in den allermeisten Fällen genauso schnell wie bisher, wenn man die Verwaltung eines extra Index sparen kann,
könnte es sogar schneller werden.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Vorgehensweise bei Unique Index

Beitrag von Manfred »

Ich stehe jetzt aiuch vor dem Problem. Wäre es dann wirklich eine bessere Lösung das mit einem CANDIDATE Index zu lösen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten