سلام دوستان.
چند روز پیش یک مقاله خیلی جالب در مورد بهینه سازی SP به دستم رسید که گفتم چند نکته از اون رو در اینجا ذکر کنم تا هرکس که نیازمنده استفاده کنه.البته نسبت به اساتید فن بی احترامی نمیکنم.چون در اینجا همه استاد بنده هستن.
مورد 1- در نامهای SP از "_sp" استفاده نکنید. زیرا این علامت مخصوص sp های سیستمی موجود در جدول master میباشد و هنگامی که از این اختصار استفاده میکنید سیستم ابتدا دنبال این نام در جداول سیستمی میگردد. پس از اون اگه پیدا نکرد با ownerDBO به دنبال اون میگرده که همین باعث میشه کلی از سرعت اجرای sp کاهش پیدا کنه.
2-در داخل یک SP بهتر است به جای اینکه داخل آن از دو دستور Select استفاده کرد، هرکدام را در داخل یک SP قرار داده و آنرا به هنگام نیاز اجرا کنیم. به مثال زیر توجه نمایید:
create Stored procedure dbo.SPTest @query bit
as
if @query=0
select * from authors
else
select * from publishers
go
بهتر است از نمونه زیر استفاده شود.
create Stored procedure dbo.SPTest @query bit
as
if @query=0
Exec sptestFromauthors
else
Exec spTestfrompublishers
go
//-----------------//
create Procedure dbo.spTestfromAuthors as
select * from Authors
go
//-----------------//
Create Procedure dbo.spTestFromPublishers as
Select * from Publishers
go
دلیل استفاده از کد زیر چیست و نسبت به کد بالا چه مزیتی دارد؟
در داخل هر sp فقط یک Query میتواند در داخل cache SQL قرار میگیرد . و چون در داخل SP اول دو query هستند هر دفعه که این SP اجرا شود مجدد SP کامپایل خواهد شد و همین سرعت آنرا خواهد گرفت.
امیدوارم که این چند نکته بدردتون خورده باشه.حالا ادامه مطالب رو هم خواهم نوشت.