در این مطلب قصد داریم در خصوص Set Based نوشتن که سبب سوالات بسیار زیادی گشته و ابهام ایجاد شده پیرامون اینکه بانک اطلاعاتی SQL Server چگونه متوجه راه درست می شود بحث کنیم.
آموزش ساده Set Based نویسی در دیتابیس SQL Server
تصمیم گرفتیم یک مقدار ساده تر روش نوشتن Set Based در بانک اطلاعاتی SQL Server را توضیح بدهیم و با مثالهای متعدد این بحث را جا بندازیم.
خوب بگذارید از یک مثال فارسی شروع کنیم.
ما میخواهیم ده تا کتاب را از کتابخانه از سری کتابهای علمی بگیریم که رنگ جلد آنها زرد می باشد.
این را میشود به دو صورت بیان کرد. ما در دو حالت Set Based و Cursor Based بیانش میکنیم تفاوت هاش را ببینید و خودتان زمانش را حدس بزنید.
قسمت Set Based:
در کتابخانه به قفسه کتابهای علمی بروید (From) و از فهرست آنجا نگاه کنید کتابهایی که جلد زرد رنگ دارند (Where) ده عدد (Top) جدا کنید.
قسمت Cursor Based:
با استفاده از تاکسی ها به کتابخانه بروید. حتما سوار تاکسی های زرد شوید و از تاکسی های عبوری و اتوبوس استفاده نکنید.
در کتابخانه از راهروی سمت راست بروید به انتهای راهرو که رسیدید به سمت چپ بپیچید و از پله ها پایین بیایید به انتهای راهرو بروید در اونجا قفسه کتابهای علمی را مشاهده می کنید.
حالا از پایین قفسه تک تک کتابها را بردارید رنگشان را بررسی کنید اگر رنگ آنها زرد است برشان دارید و بگذارید داخل سبد اگر رنگش زرد نبود کتاب را بگذارید سر جایشان و سراغ کتاب بعدی بروید. این کار را تکرار کنید تا ده عدد کتاب با جلد زرد رنگ را جمع آوری کنید.
تفاوت دو حالت Set Based و Cursor Based در بانک اطلاعاتی اس کیو ال سرور
شما به SQL Server میگویید چه چیزی نیاز دارید و از کجا و چه مشخصاتی داشته باشد. اینکه چگونه آن دیتاها فراهم شود بانک اطلاعاتی SQL Server به واسطه Statistics ها، به واسطه ایندکس ها و موارد دیگره بهترین الگوریتم و سریعترین الگوریتم را برای رسیدن به دیتای شما فراهم می کند.
ولی وقتی شما می آیید مطابق روش دوم برای آن راه حل در نظر میگیرید سبب میشود دیگر از الگوریتم های خودش پیروی نکند و هرچی شما دیکته کردید انجام بدهد پس مستلزم انجام مراحل خیلی بیشتر و مسلما زمان بیشتر و درگیری منابع بیشتر می باشد.
وقتی من در روش اول بیان نکردم چطور بروید کتابخانه، شاید آن فرد با BRT خیلی سریعتر برسد یا با مترو. ولی در روش دوم من اجبارش کردم حتما باید با تاکسی زرد برود. که میتواند ترافیک باشد و خیلی شلوغ باشد.
نویسنده:
مهندس حمیدرضا صادقیان