Clustered och non-clustered index
För att få ner tiden på SQL-frågor mot stora tabeller så krävs index på rätt kolumner. Men vad är skillnaden mellan ett clustered och ett non-clustered index?
Clustered
- Alla rader i tabellen sorteras fysiskt efter de kolumner som ingår i indexet.
- Det kan bara finnas ett clustered index per tabell.
- En tabell sorteras enbart fysiskt när den innehåller ett clustered index.
- En tabell som innehåller ett clustered index kallas för “clustered table”.
Non-clustered
- Ett non-clustered index har en struktur som skiljer sig från tabellens och innehåller kolumnerna som ingår i indexet och en pekare till den rad som är aktuell.
- En tabell som inte innehåller ett clustered index kallas för “heap” och sorterar inte sina rader fysiskt.
- En pekare i ett non-clustered index kallas för “row locator”. En row locator ser olika ut beroende på ifall tabellen innehåller ett clustered eller non-clustered index. Är det en heap table så pekar row locatorn på raden. Ifall det är en clustred table så pekar row locatorn på key:n i clustred index.