Tema: Re: Idomumo delei: kodel ADO komanda letesne?
Autorius: Linas Petkevičius
Data: 2010-05-10 19:05:28
O Execution schemos nesilogina ant SQL serverio?

"Meff" <noemail@japan.cc> wrote in message 
news:hs9agt$qek$1@trimpas.omnitel.net...
> Sveiki. Įdomumo dėlei (M$ nelabai kažką radau, o StackOverflow aiškina 
> apie konvertavimą į konkretų parametro tipą).
> Yra tokia SQL komanda
>
> DELETE FROM Detail WHERE MasterUUID = 
> '8d66bfb5-f638-4e30-ac27-328078122122'
>
> šita komanda suveikia per < 1 sekundę, jei leidžiama iš Management Studio. 
> O jei leidžiama per .Net kodą:
>
> SqlCommand cmd = new SqlCommand(string.Format("DELETE FROM Detail WHERE 
> MasterUUID = '{0}'", masterUUID));
>
> ji suveikia per ~20 sekundžių
> Tačiau jei ji yra va tokia:
>
> SqlCommand cmd = new SqlCommand(string.Format("DELETE FROM Detail WHERE 
> MasterUUID = @MasterUUID");
> SqlParameter masterUUIDParameter = new SqlParameter("MasterUUID", 
> masterUUID);
> cmd.Parameters.Add(masterUUIDParameter);
>
> arba parametras pagaminamas taip:
>
> SqlParameter masterUUIDParameter = new SqlParameter("MasterUUID", 
> DBType.Uniqueidentifier);
> masterUUIDParameter.Value = masterUUID;
>
> (konstruktoriuje nurodomas patametro tipas)
> tada ta pati komanda vykdoma ~2 minutes...
> Kaip manot, ką .Net'as padaro ir kaip tokių nesąmonių išvengti? Jau ne 
> pirmą kartą su tokia nesąmone susiduriu. Ypač aktualu, kai trinami dideli 
> duomenų kiekiai.
>
> Indeksas ant MasterUUID kažkiek padeda, bet proporcijos vis tiek išlieka 
> tos pačios.
>
> .Net 2.0