View Full Version : سرعت View بیشتر است یا SP
mehr_83
پنج شنبه 09 خرداد 1392, 19:06 عصر
با سلام و خسته نباشید
1- قطعه کد زیر در View سرعتش بیشتر است یا در SP ؟
SELECT dbo.[group].groupid, dbo.subgroup.subgroupid, dbo.[group].groupname, dbo.subgroup.subgroupname
FROM dbo.[group] INNER JOIN
dbo.subgroup ON dbo.[group].groupid = dbo.subgroup.groupid
2- اگر در View بنویسم سپس توسط SP در ASP.NET فراخوانی کنم سرعتش بیشتر میشود یا توسط خود View را در ASP.NET فراخوانی کنم؟
in_chand_nafar
پنج شنبه 09 خرداد 1392, 20:58 عصر
جفتشون رو پلن بگیرید یکسان هستند (تفاوتی در سرعت شاید نبینید فقط مسئاله مهم استفاده مجدد از پلن است)
اما اگر اون رو SP کنید پلن اون مجددا Reuse میشه
ببینم کوری شما Where و... نداره ان شاا... قرار تمام رکوردها را در اختیار کاربر قرار بده
چون در این شرایط اگر Syntax کوئری عوض نشه (حتی حروف کوچک و بزرگ)
پلن مربوط به View شما دقیقا مثل SP مورد استفاده قرار خواهد گرفت.
mehr_83
پنج شنبه 09 خرداد 1392, 22:40 عصر
منظورتون از پلن چیه؟
چرا شرط هم داره.
در نهایت چیکار کنم؟
in_chand_nafar
پنج شنبه 09 خرداد 1392, 23:00 عصر
Execution Plane (نقشه اجرایی) در واقع ترتیب اجرای فیزیکی کوئری که شما نوشته اید است.خیلی ساده بگم با استفاده از اون sql می فهمه چه طور باید بره دیتاهای شما رو واکشی کنه
شما کوئری تون رو Highlight کنید (برای SP هم می توانید این کار را انجام دهید EXEC SP_name/کافی اون رو های لایت کنید) و کلید Ctrl+L را فشار دهید چیزی که می بینید پلن اجرایی نام دارد
حالا هربار که این Select شما با Whereهای متفاوت برای SQL ارسال بشه ابتدا در کش مربوط به این پلن ها (Plan Cache) بررسی میشه آیا عبارتی مشابه کوئری شما وجود داره (دقیقا با اون Where و حتی با همون حروف کوچک و بزرگ) اگر وجود داشت دیگه وقت برای ایجاد پلن گذاشته نمیشه اما اگر وجود نداشت پلن ایجاد میشه و....
در صورتیکه اگر از SP استفاده کنید کوئری شما پلن اش یکبار ساخته شده و بارها مورد استفاده قرار می گیرد (کمی افزایش سرعت برای ReUse مجدد پلن دارید
اما شما بهتر برین سراغ SP در ضمن اگر سرعت قرار زیاد بشه به فکر ایندکس و... باشید
چند تا فیلم انتهای این لینک (http://www.nikamooz.com/%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA/%D8%AD%D9%88%D8%B2%D9%87-sql-server/speed-%E2%80%8B%E2%80%8Bin-sql-server-2012.html)است می تونید اونها رو یه نگاه بیاندازید
این هم چند فیلم در زمینه Performance (http://www.aparat.com/nikamooz)
tooraj_azizi_1035
پنج شنبه 09 خرداد 1392, 23:24 عصر
در تکمیل صحبتهای دوستم، فراخوانی کوئری در ASP .NET باعث ارسال کل کوئری از طریق شبکه هست که امنیت و ترافیک رو به عنوان دو مشکل به همراه داره، اما در نهایت چون از هر دو روش باید SQL Server کوئری رو اجرا کنه سرعت یکی هست. Cache کردن Plan اجرا هم برای هر کوئری وارده انجام میشه و هر بار که دوباره همون کوئری یا کوئری که میتونه از اون پلن استفاده کنه وارد بشه فیلد Age مربوط به پلن اجرایی بیشتر میشه که نشان دهنده میزان Reuse اون هست و هر چه پلن قدیمی تر شود ماندگاری اش در Cache بیشتر می شود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.