Datenbanken und Algorithmen

NightMaster

Geselle
Registriert
1. März 2003
Beiträge
75
Folgende Situation:

Man hat eine Applikation die auf eine Datenbank und eine dazugehörige Table zugreift. Diese Anwendung hat nicht mehr als ein simples Textfeld.

Jetzt die Schwierigkeit kurz (eigentlich lang) beschrieben:

In dieser Table gibt es z.B. 4 Rows die das Feld, oder die Column "ID" enthalten und auch ein Primary Key Feld, das "ROW_ID" heißt und den jeweiligen Reihenindex als Autowert enthält.

Im ersten Schritt:

Row 1: ROW_ID = 1, ID = 1
Row 2: ROW_ID = 2, ID = 3
Row 3: ROW_ID = 3, ID = 4
Row 4: ROW_ID = 4, ID = 1000000

Gibt nun jemand 1000000 ein, so passiert SQL-mäßig etwa das:

"SELECT * FROM " + sTableName + " WHERE ID=" + TextBox.Text;

In diesem Falle freuen wir uns, da wir einen Wert ungleich NULL zurückbekommen werden.

Im zweiten Schritt:

Nun geben wir mal 2 ein und sehen, was nun passiert...

Der gleiche SQL-Befehl wird uns nichts sinnvolles zurückliefern und dann müssen wir entscheiden:

1. Der neue Wert ist kleiner als der alte und somit könnte man sagen, man nimmt den Rowindex vom alten Wert her und geht einfach um 1 zurück und somit erhält man den nächst möglichen Wert darunter.

2. Man stellt fest, dass dies aber nicht zielführend ist, da man eigentlich den näherst möglichen Wert sucht. In diesem Falle wäre das 3, wenn man vom Basiswert 1000000 ausgeht und nicht etwa 4, denn 3 liegt näher an 2 als 4. 1 wäre genauso nah dran, aber man geht von einem Wert aus, der höher ist als die gesuchte Zahl und nicht niedriger und somit wäre es sinnvoller, wenn man 3 als Möglichkeit nimmt.

Jetzt stellt sich die Frage:

Ist es möglich, den nächstmöglichen Wert zu finden, ohne

1. Den kompletten Datensatz der Table in ein Dataset zu laden

und

2. Ohne irgendwelche Loops zu verwenden, die ein Feld nach dem anderen durchsuchen, denn bei z.B. 10 Mio. Einträgen, wäre man sehr lange nicht fertig, aber dieser Prozess sollte so schnell wie möglich gehen (am besten Millisekundenbereich).

Hinweis:

Es ist immer ein Minimumwert und ein Maximumwert definiert und man kennt auch die Anzahl der Rows.

In diesem Falle wären es 4 Rows, mit dem Minimumwert 1 und dem Maximumwert 1000000.

Es könnten aber auch die gleichen Werte bei z.B. 50000 Rows sein.

Irgendeine Idee dazu?

MFG
 
Ähnliche Beiträge
Autor Titel Forum Antworten Datum
P Eine Frage zu Datenbanken Hard- und Software 4
E Datenbanken für songtexte Fernsehen, Kino und Musik 8

Ähnliche Beiträge

Oben