gandalf wrote:
>
> Hej Kristian,
>
> Grunden til det giver dårligere performance, er fordi normalt er en stored procedure precompileret, dvs. den skal ikke compiles hver gang den bliver kaldt.
> Ved at køre en "exec" inde i en stored procedure sørger for at din stored procedure skal fortolkes hver gang.
Dette er en sammenligning mellem "exec" og en direkte sql, begge dele i
en SP. Her er jeg udmærket klar over, at der er en performancefaktor.
Men som jeg opfattede svaret på mit indlæg, var det en påstand om, at en
sql-forespørgsel eksekveret gennem exec i en sp er væsentligt
langsommere end den samme sql udført direkte på basen (gennem en prompt
eller et passende interface fra fx VB). Er dette korrekt, og givet fald,
hvorfor?
> Med hensyn til at en order by ikke kan laves på anden måde, er dette ikke helt korrekt, hvis du fortæller hvad feltnr du vil sortere efter istedet :
>
> CREATE PROCEDURE OrderProc @ordercol int AS
> select * from a
> order by case
> when @ordercol=1 then felt1
> when @ordercol=2 then felt2
> else felt3
> end
Ah, jeg havde glemt fordelene ved "case".
--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk |
http://www.thehungersite.com