Zoals RobIII al zegt, is dat net het doel van indexen.
Een index op een veld, versnelt een zoekopdracht op dat veld. Een INSERT of een UPDATE zorgt dan wel weer voor wat extra overhead (omdat de index moet aangepast worden).
De Index heb ik op het unieke veld, Id, gezet. Is dit dan ook een goede index?
Een index op een primary sleutel is er meestal zowiezo.
Je kan nu ook overwegen om indexen te leggen op velden waar je veelvuldig op zoekt en joined.
Als je veelvuldig gebruikt maakt van een filter op een combinatie van 2 of meer velden, kan je ook een samengestelde index maken op die velden. Dan moet je wel weten dat de volgorde waarin je die velden in de index opneemt, wel eens belangrijk kan zijn.
Als je bv een index hebt op de combinatie (A, B ), en je filtert enkel op A, dan wordt de index gebruikt. Filter je enkel op B, dan wordt de index niet gebruikt.
Maakt het ook nog uit of de Index Clustered en/of Unique is? En als laatste vraag: wat houdt fill factor en depth in?
Dat staat dus in de help.
Als je een 'clustered' index hebt, wil dat zeggen dat die index ook de 'fysieke opslagvolgorde' van je records bepaalt.
Een tabel kan dus slechts één clustered index hebben. Een clustered index kan je leggen op een veld dat je veel gebruikt om te zoeken op 'ranges' (bv. geef me alle records waarvoor veld A tussen vorige week en vandaag ligt). Dit is interessant omdat, als je het éérste record dat binnen die range valt gevonden hebt, je ook zeer snel de andere grens van je range kan vinden. (de index hoeft dan enkel vanaf dat punt verder afgelopen worden).
Aangezien een clustered index dus je 'fysieke opslagvolgorde' bepaalt, leg je dus ook best
geen index op een veld dat veel veranderd. Als je dat wel doet, dan wil dat nl. zeggen dat je opslagvolgorde van alle records opnieuw bekeken moet worden als je zo een veld wijzigt. Dat brengt natuurlijk nog meer overhead mee.