tgoop.com/sql_server/742
Last Update:
سلام خدمت دوستان عزیزم
امیدوارم حالتون عالی عالی باشه.
میخواستم در این پست یک توضیحی درخصوص SARGable ها بدم.
وقتی که میگیم یک کدی SARGable نیست. یعنی چی.
عبارت SARGable مخفف Search ARGumentable هست.
زمانی که شما دارید یک عبارتی رو فیلتر می کنید یا در ON جوین ها فیلتر می نویسید ، ماهیت فیلدها نباید دستخوش تغییرات بشه.
به عنوان مثال
Seleect * from Table1
Where Left(Name,5)='Hamid'
اگر بر روی فیلد Name ما یک ایندکس داشته باشیم ، SQL Server اینجا از ایندکس استفاده نکرده و اصطلاحا Index Scan رخ میده. حالا این یعنی چی؟ یعنی اینکه کل Index و دیتای جدول شما ، هرچندتا رکوردی که داره جستجو میشه تا این اطلاعات بدست بیاد
ولی وقتی مثلا به این صورت بنویسید
Select * from Table1
where Name like N'Hamid%'
این کد از ایندکس استفاده می کنه و اصطلاحا یک Index Seek رخ میده و فقط Page هایی خوانده میشن که واقعا این اطلاعات در اونها وجود داره و کل جدول اسکن نمیشه.
در شرط های On هم به همین صورت هست
که باید این مساله به شدت رعایت بشه.
برای اینکه در SQL Server هم درست کد بنویسید ، پیشنهاد میکنم د رخصوص مفاهیم Set Based و همچنین مفهوم Declarative مطالعه داشته باشین
این باعث میشه نوع نگرشتون به کدنویسی د رلایه SQL Server کاملا فرق کنه.
شاد باشین و شکرگزار
حمیدرضا صادقیان
BY SQL Server
Share with your friend now:
tgoop.com/sql_server/742
