User defined scalar valued function prestanda

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

User defined scalar valued function har funnits sedan SQL server 2000 och används, enligt våra SQL konsulter, väldigt ofta i databaser ut på marknaden. Funktionellt så är det rätt tänkt att kapsla in frekvent återkommande T-SQL kod i generella funktioner, men vad många inte vet är att prestandan i dessa funktioner är väldigt dåliga. Det kan fungera bra när man jobbar med små volymer, men passerar man över 1000 rader så försämras prestandan drastiskt.

Detta prestanda problem uppstår eftersom SQL Server måste exekvera funktionen för varje rad i resultatsetet vilket resulterar i en cursor liknande prestanda förlust. För att komma runt detta problem så bör man sluta använda dessa funktioner i väntan på att Microsoft utvecklar Inline User defined Scalar Valued Functions.

Vi hoppas att dessa funktioner kommer i nästa version av SQL server. Om du är intresserad av att läsa mer om detta problem så kan du läsa nedanstående blogg: http://sqlblog.com/blogs/adam_machanic/archive/2006/08/04/scalar-functions-inlining-and-performance-an-entertaining-title-for-a-boring-post.aspx

Håkan Winther