PDA

View Full Version : سوال: کدوم یک از این دو روش بهینه تره؟لطفا اساتید هم نظرشون رو بگن



veniz2008
پنج شنبه 25 خرداد 1391, 09:26 صبح
سلام،من واسه انجام عملیات های اصلی در برنامه(درج و حذف و ویرایش و جستجو) از دو روش تا حالا استفاده کردم،میخوام بدونم کدوم یک از این دو روش بهینه تر هست.من واسه انجام عملیا تها از STORED PROCEDURE استفاده میکنم،حالا نکته ای که هست مثلا برای درج کاربر جدید در جدولم دو روش کلی رو تا الان انجام دادم،روش اول:داخل sp ای که مینویسم چک میکنم که آیا این کاربر قبلا ثبت شده یا نه(در واقع از متد EXIST استفاده میکنم)،بعدش نتیجه رو به محیط دات نت میفرستم. روش دوم : داخل sp ازیک select معمولی(یعنی بدون تابع EXIST) استفاده میکنم و نتیجه رو داخل یک دیتاتیبل یا دیتاست میریزم و بعد چک میکنم که آیا درون این دیتاتیبل(یا دیتاست)رکوردی وجود داره یا نه(اگه رکوردی بود یعنی اون کاربر قبلا ثبت شده)،در پروژه های کوچیک فرق این دو روش مشخص نمیشه،لطفا بگید که کدوم روش مناسب تره(با ذکر دلیل)،تشکر.

veniz2008
پنج شنبه 25 خرداد 1391, 13:33 عصر
کسی نیست راهنمایی کنه؟

Arash_janusV3
پنج شنبه 25 خرداد 1391, 13:40 عصر
در روش EXIST سرعت بسیار بیشتر از select هستش
چون اگر تعداد کاربر ها زیاد شوند این دستور سنگین می شود و حال آنکه شما بعد از select باید کنترل هایی هم انجام بدید
البته در این روشی که گفتید من نظرم را دادم وگرنه همان select هم می توانید بهینه تر کنید که از سرعت بیشتری برخوردار باشد

veniz2008
پنج شنبه 25 خرداد 1391, 16:51 عصر
ضمن تشکر از جواب دوستمون،برای اینکه بیشتر و بهتر توضیح داده باشم کد رو به همراه توضیحات بیشتر ارائه میکنم:
در روش Exist من کد زیر رو قرار میدم و داخل خود sp عملیات وجود یا عدم وجود رکورد رو بررسی میکنم:

if(EXISTS(select * from users where UserName=@username))
set @result=1
else
begin
set @result=0
insert into users(UserName,Password,FirstName,LastName,PostalC ode,Tel,Address)
Values(@username,@password,@firstname,@lastName,@p ostalcode,@tel,@address)
end
اما در روش دوم فقط از دستور select استفاده میکنم و نتیجه رو برمیگردونم(چه رکوردی پیدا کنه یا نکنه)و در محیط دات نت این نتیجه رو داخل یک دیتا تیبل( یا دیتاست) میریزم و بعد این دیتاتیبل رو چک میکنم که آیا رکوردی درونش هست یا نه؟اگر نبود sp مربوط به درج صدا زده میشه.