SQL Server förenklat – heap vs klustrat index

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Informationen i en tabell lagras i så kallade sidor som är 8kb stora. En tabell som är större än 8kb innehåller alltså flera sidor. Om du skapar ett klustrat index på en tabell så kommer informationen att lagras sorterad och med en ”innehållsförteckning”, ett så kallat b-tree.

Om tabellen saknar ett klustrat index så kommer informationen att lagras osorterat huller om buller där det finns plats, och det finns ingen innehållsförteckning som håller reda på var informationen ligger. En sådan tabell lagar informationen i en så kallad heap.

Man kan likna en heap vid ett anteckningsblock där du skriver ner dina spontana tankar lite varstans där det finns plats. Du behöver alltså inte fundera så mycket på vart informationen hör hemma.

En tabell med ett klustrat index kan du istället jämföra vid ett uppslagsverk där informationen ligger sorterad och med en innhållsförteckning. Det krävs förvisso lite mer fundering när du ska skriva till någonting till uppslagsverket, men det är så mycket enklare att söka något jämför med anteckningsblocket.

I uppslagsverket så kan du antingen använda innehållsförteckningen eller snabbt bläddra fram till den sidan där informationen finns lagrad, men i anteckningsblocket så måste du bläddra igenom hela blocket, VARJE GÅNG!

Det är ingen tvekan om vilken metod som är snabbast, det går självklart mycket snabbare att hitta i uppslagsverket!

En bra grundregel är alltså att alla tabeller skall ha ett (bra) klustrat index!

Av Håkan Winther
Twitter: @h_winther