Hjælp til forståelse af Execution Plan
Jeg sidder i øjeblikket og forsøger at forstå den execution plan, som query analyzeren kommer op med på baggrunden af et T-SQL statement, for bedre at være i stand til at vælge indekseringer. Jeg forstår så småt hvad de forskellige ikoner i den grafiske oversigt betyder, og forstår hvordan den bygger resultatet op.De statements jeg arbejder med er forholdsvis komplekse, og kan indrage op til 6-8 joins, aggregat-funktioner og deslige. Dette kan måske lyde af meget, især i betragtning af, at flere af tabellerne kan indeholde betragtlige mængder data (ca. 2 mio., og voksende med tid).
Mit problem er så at forstå de forskellige indikatorer på omkostninger, som indgår i den grafiske oversigt:
1.
Under hvert ikon/operation er står: "Cost x%", men jeg synes ikke at kunne finde en sammenhæng mellem tilstødende operationer. Nogle står der 600% ved, mens andre i samme query har 0% eller 500%. Hvad er denne procent et udtryk for, og i forhold til hvad?
2.
Det er lykkedes mig, ved at sætte nogle, efter min mening, fornuftige indekseringer, at få 0% under samtlige operationer (ca. 20 i alt), og samtidig står foroven i rapporten: "Query 1: Query cost (relative to the batch): 0,00%". Er dette et godt tegn, eller hvad er alle de mange 0% et udtryk for?
3.
I den lille, gule info-popup for hver enkelt operation, står en række cost-indikatorer. Nogle operationer har værdien "Cost" angivet, andre ikke - dette undrer mig lidt. Nogle har Subtree cost sat til 0, mens sub-operationer har f.eks. 9, hvordan kan dette lade sig gør?
4.
Hvilke indikatorer er de vigtige, når man skal finde og minimere de mest omkostningsfulde operationer, og hvordan kan man sammenligne de forskellige operationers omkostninger?
Ja, disse spørgsmål er nok ikke for enhver, men mon ikke der er nogen der kan svare på dem alligevel? :-)
