alexander_ro hat geschrieben:Was glaubst Du wieviele Abrechnungsdaten ein Telefonnetze pro sekunde erzeugt?
Viel Spaß wenn Du so eine '9223372036854775807' Bestell-Nr oder Kunden-Nr oder oder oder auf einen Bestellschein schreiben mußt. Ein Unternehmen das sowas einem Kunden zumutet ist Pleite bevor es richtig gegründet wurde.
Größe ist nicht alles es ist immer noch die Frage wer diese Indexe handeln muß. Menschen oder Maschinen. Also gibt es immer noch gute Gründe Lücken im Index wieder zu verwenden.
Das Argument ist IMHO Unfug. Abrechnungsdaten sind für mich hier die reinen Verbindungsdaten,
die vielleicht in einer Tabelle anfallen, in der 10.000 oder von mir aus noch mehr Kunden
stehen. Der Kunde hat dann eine Kundennummer, die auch auf der Abrechnung steht,
nicht aber die Datensatznummer, mit der sein Anruf in Deiner internen Datenbank steht.
Und Indexe handelt in einer DB nie ein Mensch. Der vergißt nur, diese anzulegen...
Und für den Fragesteller:
Angenommen, die hast eine Table table_with_gaps, die Löcher enthält. Dir ist bekannt,
daß die höchste ID 10.000 ist. Du willst nun das erste Loch finden:
select generate_series(1,10000) except select id from table_with_gaps limit 1;
Allerdings performt das nicht wirklich. Wenn Du von Anfang an Dich um die 'Löcher'
kümmern willst, wirst Du diese mittels Trigger Dir merken müssen.