مزیت ایندکس:
افزایش قابل توجه سرعت کوئری های select.
معایب ایندکس:
کاهش سرعت کوئری های insert و update.
اشغال بیشتر فضای حافظه.
انواع ایندکس:
- ایندکس index (برای افزایش سرعت در جستجوی مقدار)
- ایندکس unique (علاوه بر افزایش سرعت در جستجوی مقدار، یکتا بودن مقدار ستون رو هم چک می کند)
- ایندکس full-text (برای افزایش سرعت در جستجوی مقدارهایی از جنس متون نسبتا طولانی)
- ایندکس spatial (برای افزایش سرعت در جستجوی مقدارهایی از جنس موقعیت های مکانی)
- ایندکس primary (کلید اصلی جدول هست و علاوه بر جلوگیری از ورود مقدار تکراری از ورود null ها هم جلوگیری میکند)
نحوه ایجاد ایندکس روی جدول در Sql Server
جدول مورد نظر را که میخواهید روی آن ایندکس ایجاد کنید را انتخاب کنید و آن را باز کنید تا پوشه Indexes را مشاهده کنید.
روی Indexes کلیک راست کنید و گزینه New Index و Non Clustred Index را انتخاب کنید.
فرم New Index باز می شود. در این فرم باید مشخصات ایندکسی را که میخواهیم ایجاد کنیم تعیین کنیم. به تصویر زیر دقت کنید
در قسمت شماره 1 نام جدولی که قرار است بر روی یک یا چند فیلد آن ایندکس گذاری شود نمایش داده می شود.
در قسمت شماره 2 باید نام ایندکس را مشخص کنید. دقت کنید که ایندکس آبجکت ها یا اشیای دیتابیس محسوب می شوند و باید نام منحصر بفرد داشته باشند. یعنی شما نمی توانید در یک دیتابیس 2 ایندکس هم نام داشته باشید.
در قسمت شماره 3 نوع ایندکس مشخص می شود که non clustred می باشد.
و در قسمت شماره 4 هم ستون یا ستون هایی که قرار است درگیر این ایندکس باشند مشخص می شود.
خب روی دکمه Add کلیک کنید تا یک ایندکس جدید ایجاد کنیم. فرم Select Column باز می شود. در این فرم باید ستون یا ستون هایی را که می خواهید روی آنها ایندکس ایجاد شود را انتخاب کنید.
روی دکمه Ok کلیک کنید تا به فرم قبل برگردید. حالا ستون هایی که قرار است ایندکس گذاری شود مشخص شده است.
روی دکمه Ok کلیک کنید تا ایندکس شما ایجاد شود. حالا ایندکس شما باید در لیست ایندکس های جدول شما نمایش داده شود.
خب به این ترتیب شما موفق به ایجاد یک ایندکس non Clustered بر روی جدول خود شده اید.
معیارهای ایندکس گذاری بر روی جداول در Sql Server :
خب سوال اساسی اینجاست که چگونه تشخیص دهیم که یک جدول نیاز به ایندکس گذاری دارد یا خیر! و اگر نیاز به ایندکس گذاری دارد کدام ستون ها را برای ایندکس گذاری انتخاب کنیم. جهت ایجاد ایندکس بر روی جداول و همچنین انتخاب ستونهای ایندکس به نکات زیر توجه کنید.
معمولا بر روی جداولی باید ایندکس گذاری انجام شود که تعداد ستون های آنها زیاد می باشد.
معمولا بر روی جداولی باید ایندکس گذاری انجام شود که تعداد رکورهای خیلی زیادی دارد.
سعی کنید بر روی جداولی ایندکس گذاری کنید که تراکنش های زیادی در آن جدول انجام می شود. به عنوان مثال ممکن است جدولی تعداد ستون و ردیف زیادی هم داشته باشد ولی در روز یکی دو بار بیشتر از آن جدول استفاده نشود.
برای ایندکس گذاری فیلدهایی را انتخاب کنید که بیشتر مورد جستجو قرار می گیرند.
تا حد ممکن سعی کنید ایندکس گذاری بر روی یک فیلد انجام شود. مثلا از انتخاب چند فیلد در یک جدول ترجیحا خود داری نمایید.
اگر می خواهید ایندکس بر روی بیش از یک فیلد قرار دهید 2 فیلد هم نوع و مشابه باشند. به عنوان مثال ایندکس بر روی “نام کالا” و “توضیحات کالا” می تواند مناسب باشد.مثلا بر روی نام کالا و قیمت کالا یک ایندکس مشترک ایجاد کنیم که نام و قیمت هم نوع نیستند. بنابراین این ایندکس زیاد مناسب نیست.
انواع ایندکس در Sql Server :
به طور کلی دو نوع ایندکس در جداول می توان ایجاد کرد.
Clustred Index : این ایندکس به صورت اتوماتیک بر روی همه جداول و بر اساس کلید اصلی ایجاد می شود.
Non Clustred Index : این ایندکس ها را طراح دیتابیس با توجه به نیاز می تواند ایجاد کند.