O koks yra MasterUUID stulpelio tipas duombazėje - uniqueidentifier ar koks (n)varchar? Gal SQL serveris gaišta laiką konvertuodas visus uniqueidentifier į stringus (ar nvarchar į varchar)? Geriausia būtų sql profiler'į pasileisti ir pažiūrėti kaip tas SQL atrodo ir pabandyti tuos sql statement'us paleisti iš Managment Studio. Gal SQL serveris turi blogus planus toms parametrizuotoms uzklausoms is ADO.NET užsikešavęs. Kitas dalykas, gal kiek mažiau tikėtinas, - ADO.NET defaultinis transakcijos isolation level yra serializable, o Management Studio query lange tikriausiai kitoks. Gal tai irgi gali turėti įtakos? Gal ir kiti connetion settingai skiriasi (ARITHABORT)? ..Dėl .NET distributed transakcijų - jei dirbama tik su vienu SQL serveriu tai distributed tranzakcijos nenaudojamos, jei tranzakcija susideda iš keleto resursų (SQL, messsage queues ir t.t.) tada bus naudojamas DTS, kuris yra kiek lėtesnis nei lokali tranzakcija. Bet tikrai ne taip stipriai lėtesnis kaip tavo pavyzdyje. Šiaip tai įdomu kodėl taip keistai gaunasi, bet manau, kad problema bus labiau SQL serverio pusėje, G.V. "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