PDA

View Full Version : ایندکس تنها یا گروهی ؟



Developer Programmer
پنج شنبه 12 دی 1392, 10:39 صبح
بذارین کامل توضیح بدم !!
فرض کنین،
یک جدول داریم که در اون اطلاعات هویتی افراد به همراه کد ملی ثبت میشه.
جداول دیگه ای هستن(مثل جدول جریمه، جدول اقساط و ...) که به جدول فوق ارتباط دارن و در هر کدام اطلاعات مالی مجزا ثبت میشه


مثلا ساختار جدول جریمه رو اینطوری تصور کنین:
1) کد پیگیری
2) کد ملی فرد
3) کد واحد
4) جریمه
5) مانده بدهی
6) کلاسه پرونده
7)...

حالا، در طی برنامه کوئری های مختلفی هست که برای مقاصد گزارشگیری لازم بشه از هر کدوم یا ترکیبی از فیلدهای جدول جریمه، استفاده کنه.

در زمان طراحی دیتابیس، من روی فیلدهایی که ممکنه زیاد کاربرد داشته باشه، ایندکس گذاشتم. مثلا روی ستون VahedID ، و بعد روی ستون KelaseID
اما وقتی Execution Plan رو برای برخی کوئری ها نگاه میکنم، SQL میگه مثلا روی CodeMelli,VahedID ایندکس گروهی بذار

میخوام بدونم تفاوت و مزیت ایندکس گروهی با ایندکسی که روی یک فیلد گذاشته میشه چیه؟
و چرا فیلد غیر کلید رو در دستور ایندکس، include میکنن؟( create index ... include filed1)

Parseinfo
شنبه 17 اسفند 1392, 15:27 عصر
خوب چند سوال مختلف پرسیدین.
ایندکس گروهی برای مواقعی خوبه که شما در دستور Where شرطی مثل این داشته باشید: Where Name = 'Ali' And Family = 'Sadeghi' در این دستور سرور به دنبال یک ایندکس گروهی روی این دو فیلد میگرده و در صورتی وجود داشته باشه از اون استفاده می کنه. گذاشتن ایندکس های زیاد روی جدول کار درستی نیست و سرعت درج و بروزرسانی رو کند میکنه. اینکه کلید اصلی در ایندکس Include میشه به نظر کاربردی نداره. در مورد ایندکس ها مطلب بسیار زیاد است که در این چند خط نمی گنجه. فقط موقعی ایندکس گروهی روی جدول باید گذاشت که دستوراتی مثل بالا داشته باشید. در غیر این صورت فقط باعث کاهش سرعت میشه.