I allmänhet skulle min indexeringsstrategi vara ungefär så här (jag använder endast SQL Server för tillfället - anpassa till ditt eget databassystem efter behov):
-
välj en vara klustringsnyckel - inte en GUID, inte en
VARCHAR(250)
eller något - ett bra klustringsnyckeln är smal, unik, stabil, ständigt ökande - något som enINT IDENTITY
är perfekt. Gör detta till din klustrade primärnyckel -> ger dig ditt första index på tabellen -
för en kolumn som används som en främmande nyckel till en annan tabell - lägg till ett index. Det kan antingen vara ett enda kolumnindex - eller så kan det vara ett sammansatt index - vad som än fungerar bäst för ditt fall. Det är viktigt att kolumnen för främmande nyckel är den första kolumnen i det indexet (om du använder ett sammansatt index) - annars är fördelarna med
JOIN
s eller för att kontrollera referensintegriteten kommer inte att vara tillgängliga för ditt system
Och det var allt för nu.
Sedan:kör ditt system - observera och mät - upprätta en baslinje. Är appen tillräckligt snabb? Om ja -> du är klar - gå hem och njut av din fritid.
Om inte:börja då samla in data och indikationer på varför appen inte är tillräckligt snabb. Titta på t.ex. saker som DMV i SQL Server som berättar om de sämst presterande frågorna, eller saknade index DMV . Analysera dem. Se vad du kan förbättra. Lägg till ett index i taget och igen:observera, mät, jämför med din baslinje.
Om du har förbättring -> lämna det indexet på plats och detta mått är din nya baslinje. Skölj och upprepa tills du (och dina användare) är nöjda med appens prestanda (och sedan gå hem och njut av din ledighet).
Överindexering i SQL Server kan vara värre än att inte ha några index. Börja inte med för många index till att börja med! Fastställ bara bra klustrade PK och icke-klustrade index för främmande nyckel - det är allt - observera, mät, optimera och upprepa den cykeln.