sql >> Database teknologi >  >> RDS >> Oracle

Hvad skal jeg bruge i stedet for rækkefølge for at undgå huller?

Hovedformålet med sekvenser er at give en kilde til garanteret unikke identifikatorer. Disse er tekniske nøgler og generelt set burde deres faktiske værdi være irrelevant. Jeg mener - skal du overhovedet vise mappenummeret til brugeren?

Hvis du er så generet, brug NOCACHE. Det vil minimere de huller, du ser, og så længe du ikke opretter mapper meget ofte, vil du ikke bemærke præstationshittet fra ikke at cache en slap håndfuld numre. Du kan stadig få huller, hvis en transaktion rulles tilbage eller mislykkes af en anden grund, men de burde være sjældne; hvis de ikke er, har du større ting at bekymre dig om end nummereringen af ​​dine mapper!

Andre måder at generere en monotont stigende serie på er enten besværlige at implementere (udløsere over kodekontroltabeller) eller ikke garanteret at være unikke (ved at bruge max(id)+1 i en udløser). Hvis du vil bruge en kodekontroltabel - det er en tabel, der specifikt sporer det sidst tildelte mappe-id - bør du kigge ved et tidligere svar, jeg skrev som skal hvordan man gør implementere en. Den ene fordel ved en kodekontroltabel er, at vi kan opretholde tællinger med en gruppe. Så du kunne have en række mappe-id'er for hver bruger og øge dem uafhængigt.



  1. MySQL:navngivne parametre med PREPARE kommando?

  2. Sæt fra et enkelt bord, grupperet efter en kolonne

  3. hvad gør mysql_real_escape_string() egentlig?

  4. PostgreSQL til XML med 3 tabeller