30. maj 2005 - 22:43Der er
2 kommentarer og 1 løsning
Performance med stored procedures
Er der forskel på den performance gevinst man får med forskellige former for stored procedures?
Den execution plan der beregnes for en SP er vel være afhængig af f.eks. om der kræves parametre som input eller ej?
Jeg forestiller mig, at f.eks. denne SP: SELECT navn FROM mennesker WHERE alder = 20 - får en større gevinst ved at køre som SP i forhold til ikke at køre som SP, end denne: SELECT navn FROM mennesker WHERE alder = @intAlder
- fordi executionplanen i første tilfælde kan beregnes helt præcist.
Men jeg ved ikke, om jeg har ret.
Jeg regner med, at der altid er en gevinst ved at køre en forspørgsel som SP, men i nogle tilfælde må gevinsten være større end i andre - eller?
Det forholder sig omvendt, men udelukkende pga. genbrug af query planen.
I tilfælde et (alder = 20), er det ligegyldigt. Planen vil blive genereret første gang, og genbrugt ved efterfølgenden forespørgsler.
Tilfælde to: der er ret stor forskel på at køre dette som sp eller ej, og det grunder i forskellen på variable og parametre. I en SP, vil det være en parameter, og planen vil blive optimeret efter den værdi du benytter, når planen skal laves (dvs. første kald). Som adhoc query, er det en variabel, og optimizeren vil ikke antage noget omkring værdien, og derfor generere en generel plan, der kan bruges for alle værdier. Det kan give forskellige planer, hvis distributionen er meget skæv.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.