Lukas.: mysql: Erste freie Zahl finden

Beitrag lesen

Hallo Forum,

ich habe eine Tabelle "nummern", die eine Spalte beinhaltet, die einen Integer zwischen 100 und 100000 haben darf. Jeder Integer darf nur 1 x mal verwendet werden. Damit sich die Tabelle (wenn vom User nicht anders gewünscht) von unten her auffüllen soll, möchte kich ihm gerne den ersten freien Platz in dieser Spalte vorschlagen.

Das geht auch soweit, mit dieser Query:

SELECT MIN( Zahl ) FROM tabelle_nummern t1 WHERE NOT EXISTS ( SELECT Zahl FROM tabelle_nummern t2 WHERE t2.Zahl = t1.Zahl +1 ) AND t1.Zahl > 100 AND t1.Zahl < 100000

Leider ist diese Query meist sehr, sehr lahm. Zeiten von über 15 Sekunden sind bei etwa 2000-3000 belegten Nummern in der Tabelle keine Seltenheit.

Hat jemand eine Idee, wie ich das schneller lösen kann?

Lukas