kolmapäev, 2. juuni 2010

DBCC FREEPROCCACHE kaudu läbi ADO.NET kaudu salvestatud protseduuri jooksutamisele vungi sisseandmine

Kui selline juhtum, et tõmbad salvestautd protseduuri Management Studio kaudu käima töötab asi kiiresti. Sama asi aga ASP.NET rakenduses läbi ADO.NET välja kutsudes jube aeglane, põhimõtteliselt ei töötagi siis saab asjale vunki juurde anda, kui
MS SQL SERVER-is korra protseduuride vahemälu tühjaks tõmmata

DBCC FREEPROCCACHE

Hoiatatakse küll, et ärge kasutage aga lõpptulemusena saad ka läbi ADO.NET välja kutsutud protseduuri kiiresti käima.

Soovitatav lahendus aga sellistel juhtumistel on SP poolt parameetrite arvamine ära lõpetada, ehk teisenda protseduuri parameetrid lokaalseteteks muutujateks

CREATE PROCEDURE ParameetriArvamine
@nimetus NVARCHAR(10)
WITH RECOMPILE
AS
DECLARE @nimetus1 NVARCHAR(10)

--teeme parameetri teisendamise, et SQL SERVER oskaks õiget käivitusplaani teha

SET @nimetus1 = @nimetus
SELECT id, nimi FROM SinuTabel WHERE nimi = @nimetus1