dedlfix: minimaler Abstand zwischen zwei Werten einer Spalte

Beitrag lesen

Hi!

Was die Geschwindigkeit anbelangt wirst du nicht viel ausrichten können, denn die Differenz muss erst für alle Kombinationen berechnet werden, bevor die kleinste Differenz gesucht werden kann.
Das müsste er theoretisch nicht. Es reicht ja, wenn er sich immer seinen Vorgänger ansieht.

Welchen Vorgänger? Die Datensätze sind per Definition eine unsortierte Menge. Wenn es ein eindeutiges Vorgängerkennzeichen gäbe, wäre das deine Verknüpfungsbedingung. Dann ergibt sich nicht jeder mit jedem (abzüglich Dopplungen und Selbstbezug) sondern nur noch x mit x - 1 (aber: x > min(x)). Wenn die ID lückenlos ist und bleibt ... aber bei "ID-Missbrauch" stellt sich nicht nur bei mir ein ungutes Bauchgefühl ein, auch wenn es auf den ersten Blick passabel erscheint. Wie auch immer, selbst wenn du auf dieses Pferd setzen wolltest, denke ich nicht, dass sich der Zeitverbrauch verringern wird, denn es muss immer noch jeder mit jedem verglichen werden, ob es der Vorgänger ist.

In einer Schleife würde ich es ja auch so machen (Pseudocode):

Dann mach diese Schleife, allerdings empfehle ich, es als Stored Procedure zu implementieren. Ansonsten müsstest du alle Datensätzt abholen und dann "schleifen". In der SP kannst du einen Cursor definieren (ORDER BY nicht vergessen), den du durchläufst und dabei Vergleiche mit dem Vorgänger anstellst. Wie sich das zeitlich verhält, müsstest du aber mal messen - vielleicht braucht die SP ja noch länger.

Lo!