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