Vorgehensweise bei Unique Index

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

Moderator: Moderatoren

Re: Vorgehensweise bei Unique Index

Beitragvon Jan » Di, 03. Apr 2012 15:52

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11624
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Vorgehensweise bei Unique Index

Beitragvon Markus Walter » Di, 03. Apr 2012 17:02

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
Markus Walter
Programmier-Gott
Programmier-Gott
 
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Vorgehensweise bei Unique Index

Beitragvon Tom » Di, 03. Apr 2012 17:17

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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6694
Registriert: Do, 22. Sep 2005 22:11
Wohnort: Berlin

Re: Vorgehensweise bei Unique Index

Beitragvon brandelh » Mi, 04. Apr 2012 7:29

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13328
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Vorgehensweise bei Unique Index

Beitragvon Manfred » Mi, 04. Apr 2012 7:37

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16095
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: Vorgehensweise bei Unique Index

Beitragvon brandelh » Mi, 04. Apr 2012 7:56

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13328
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Vorgehensweise bei Unique Index

Beitragvon Manfred » Fr, 04. Nov 2016 11:33

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16095
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Vorherige

Zurück zu Daten und Tabellen

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast