PDA

View Full Version : SP یا کوئری (PERFORMANCE)



ealireza
یک شنبه 29 بهمن 1385, 23:17 عصر
سلام
من یک جدول دارم
حالا قراره یک سری عملیات مانند زیر روی جدول انجام بشه.


Select ID From Table Where UID=@uid [Varchar (20)]
Insert into Table (1,2,3) values (@1,@2,@3)

در کد بالا اول برنامه میاد میبینه که UID وجود داره یا نه اگه وجود داشت
اگر وجود داشت مقدار INSERT میشه ...

خوب این کار با SP انجام شه بهتره یا اینکه با خود برنامم این کارو انجام بدم

از 2005 استفاده میکنم

مرسی

AminSobati
دوشنبه 30 بهمن 1385, 08:46 صبح
سلام،
مسئله بسیار مهم اینه که شما ایندکس مناسب برای Query اولی داشته باشید تا سریع رکورد مورد نظر پیدا بشه. با توجه به اینکه این دو سطر دستور شما پیچیده نیست، قرار دادنش در SP تاثیر قابل توجهی نخواهد داشت (از نظر Performance) ولی به هر حال Best Practice اینه که SP استفاده کنین. من جای شما باشم این کار رو انجام میدم حتی اگر Query بسیار ساده باشه

Kamyar.Kimiyabeigi
دوشنبه 30 بهمن 1385, 08:48 صبح
با اجازه از استادم جناب آقای ثباتی
به نظر من از sp استفاده کنی بهتره. حالا چندتا تفاوت بین query و sp که یادمه رو براتون مینویسم :
1- sp یک بار بیشتر پارس نمیشه ولی query هر دفعه که میخواد اجرا بشه پارس میشه که زمانگیره.
2- sp کش cache میشه ولی query کش نمیشه.
3- برای sp اگر پارامترهای ورودیش تغییر نکنه یک بار بیشتر execution plan ساخته نمیشه ولی برای query هر بار یک execution plan ساخته میشه.

ealireza
دوشنبه 30 بهمن 1385, 11:40 صبح
با تشکر از پاسخ استاد ثباتی و Kamyar (http://www.barnamenevis.org/forum/member.php?u=10720)

فقط یک سوال کوچولو ....

برای انجام این کار باید با RECOMPILE مجبور کنیم که هر بار execution plan براش ایجاد بشه .

مشکلی ایجاد نمیشه

با تشکر

AminSobati
دوشنبه 30 بهمن 1385, 12:45 عصر
وقتی Query داخل SP باشه، فقط در اولین مرتبه اجرا compile میشه و exec plan براش بدست میاد. این Plan در اجراهای بعدی هم مورد استفاده قرار میگیره. اما اگر خارج از SP باشه، compile در هر مرتبه اجرا اتفاق میافته. البته داخل پرانتز عرض کنم که Queryهای ساده این شانس رو دارند که planشون مجددا استفاده (Reuse) بشه درست مثل SP ولی در کل توصیه میکنم SP استفاده کنید

ealireza
دوشنبه 30 بهمن 1385, 13:02 عصر
مرسی از SP استفاده کردم

با تشکر