Maksimal størrelse på indeksnøgle
Databaser har en maksimal størrelse på indeksnøgler, også kaldet sammensatte indekser.
Microsoft SQL Server:
- For et køindeks er det maksimale antal felter 15. Arbejdsgangssystemet bruger ét felt.
- For et arbejdsgangslisteindeks er det maksimale antal felter 16.
- For et hændelseslogindeks er det maksimale antal brugerfelter 14. Arbejdsgangssystemet tilføjer F_TimeStamp og F_SeqNumber til hvert indeks.
Den maksimale større på en indeksnøgle er 900 byte.
For at kunne bestemme størrelsen på en sammensat indeksnøgle adderer Microsoft SQL Server alle de faste kolonner med minimumværdierne for alle de variable kolonner for at afgøre, om det sammensatte indeks ligger inden for den tilladte størrelse på et indeks. Men hvis der allerede er data i tabellen, og de eksisterende data i en kolonne giver mulighed for, at det samlede antal byte i indekset er større end maksimumstørrelsen, kan indekset ikke oprettes. Og hvis der, efter at indekset er oprettet, indsættes (eller opdateres) data, som giver mulighed for, at den maksimale størrelse på indekset overskrider den maksimale værdistørrelse, så opstår der en fejl på dette tidspunkt.
Du kan f.eks. definere et indeks, der består af kolonne1 med en størrelse på 500 byte og kolonne2 med en størrelse på 500 byte. Hvis du placerer 500 byte data i kolonne1 og 500 byte data i kolonne2, modtager du en fejl. Hvis du placerer 100 byte data i kolonne1 og 100 i kolonne2, opstår der ikke nogen fejl.
Oracle:
- For et køindeks er det maksimale antal felter 31. Arbejdsgangssystemet bruger ét felt.
- For et arbejdsgangslisteindeks er det maksimale antal felter 32.
- For et hændelseslogindeks er det maksimale antal brugerfelter 30. Arbejdsgangssystemet tilføjer F_TimeStamp og F_SeqNumber til hvert indeks.
Den maksimale samlede størrelse på en indeksnøgle er 70 % af databaseblokstørrelsen minus lidt overhead.
- Log på som sysdba.
- Skriv show parameters db_block_size ved SQL>.
For at kunne bestemme størrelsen på en indeksnøgle adderer Oracle-serveren de definerede maksimumstørrelser for felter med variabel længde med størrelserne for alle felter med fast længde.
For DB2:
- For et køindeks er det maksimale antal felter 63. Arbejdsgangssystemet bruger ét felt.
- For et arbejdsgangslisteindeks er det maksimale antal felter 64.
- For et hændelseslogindeks er det maksimale antal brugerfelter 62. Arbejdsgangssystemet tilføjer F_TimeStamp og F_SeqNumber til hvert indeks.
Den samlede kombinerede maksimumlængde på en entydig indeksnøgle er 8192.