PDA

View Full Version : ایا واقعا سرعت Stored Procs از Dynamic SQL بالاتر است



SoheilKH
دوشنبه 15 آبان 1385, 12:59 عصر
http://weblogs.asp.net/aaguiar/archive/2006/06/22/Stored-Procs-vs-Dynamic-SQL.aspx

به کامنت ها هم دقت کنید.

AminSobati
دوشنبه 15 آبان 1385, 14:24 عصر
مساله اینجاست که SP یکبار (در اولین اجرا) Compile میشه و Planش بدست میاد. در دفعات بعدیه اجرا، Plan آمادست و Compile نیازی نیست. زمان مورد نیاز برای Compile کاملا بستگی به محتویات SP داره. اگر SP سبک باشه، زمان قابل توجهی صرف نمیکنه و در کل باید گفت تفاوت چندانی نیست بین Dynamic TSQL و SP. حتی در بعضی شرایط به دلیل تنوع مقادیری که به SP پاس میشه، Recompile نیازه تا Plan جدید بدست بیاد. به همین دلیل عبارت WITH RECOMPILE در دستور CREATE PROC وجود داره. ولی Dynamic TSQL یک ضعف بزرگ داره و اون هم SQL Injection هست

SoheilKH
دوشنبه 15 آبان 1385, 18:16 عصر
آیا Plan بدست آمده از Sp به پارامتر ها بستگی داره ؟؟

AminSobati
دوشنبه 15 آبان 1385, 21:21 عصر
صد در صد! حتی به مقادیری که برای بار اول به SP پاس شده
--------------------
صد در صد! حتی به مقادیری که برای بار اول به SP پاس شده

hmm
سه شنبه 16 آبان 1385, 07:35 صبح
آیا اگه مقادیر ورودی دائم تغییر کنه نیاز به کمپایل مجدد داره؟

AminSobati
سه شنبه 16 آبان 1385, 12:31 عصر
هر پارامتر ممکنه با یک Plan مخصوص به خودش بصورت بهینه اجرا بشه. لذا وقتی پارامترها خیلی متنوع هستند، WITH RECOMPILE باعث میشه در هر اجرا، مجددا Plan بدست بیاد و از اولین Plan ثبت شده استفاده نکنه. اولین Plan ثبت شده شاید برای بعضی مقادیر پارامترها بهینه نباشه