# پایگاه‌های داده > SQL Server > T-SQL >  چه موقع non clustered index درست کنیم؟

## rahimi.mohamad24

سلام
1-میشه لطفا در یک مثال کاربردی توضیح دهید که چه موقع لازم می شود فیلدی از جدولمان را از نوع non Clustered index ،تعیین کنیم؟
2-این سوال از اینجا برایم ایجاد شد که مثلا اگر یه جدول داشته باشک که دارای 3 فیلد باشد،اگر من فیلد id آن را کلید کنم و فیلد دوم را از نوع Index ، و is unique را هم برایش true کنم،
با وقتی که ترکیب هر دو فیلد را با هم کلید بگیرم، فرقی می کند؟؟

3-آیا درست کردن non clustered index ، همون تعیین type:Index , isUnique :True است؟
4-چه موقع type :unique key انتخاب می کنیم؟ وآیا این هم نوعی index است؟

----------


## ali ghaemi

1- یک محدودیت در تعریف تعداد   clustered index وجود داره برای هر جدول فقط یک clustered index می توان تعریف کرد ، بنابراین شما باید برای ایندکس کردن دیگر فیلد هاباید از non Clustered index استفاده کنید و اون محدودیت تعداد رو هم نداره   و 999 تا non Clustered index می توان روی یک جدول تعریف کرد .

توجه داشته باشید وقتی شما یک ستون رو کلید می کنید به طور خودکار برای اون  clustered index تعریف می شه .
2-  وقتی شما دو فیلد رو کلید می کنید یعنی مقادیر دو فیلد باید در کنار هم Unique باشن به عبارت دیگر تضمین نمی شه که مقادیر در یک فیلد به طور مجزا هز هم  (و نه دوفیلد در کنار هم ) منحصر به  فرد باشه .

3--آیا درست کردن non clustered index ، همون تعیین type:Index , isUnique :True است؟  *نادرست است
*4-اگر بخواهیم مقادیر یک ستون Unique باشه از Unique key استفاده می شه که خودش یک ایندکسnon Clustered index روی ستون مورد نظر تولید می کنه پس می توان گفت یک constraint که بر پایه ایندکس است

----------


## in_chand_nafar

دوست عزیز در ابتدا یک توضیح کوچک در مورد Cluster Index و NonClustered Index باید بدم
کلاستر ایندکس :  در این نوع ایندکس ترتیب فیزیکی رکوردها بر اساس کلید ایندکس شما خواهد بود. پس این نوع ایندکس چینش فیزیکی رکوردها را عوض می کند و یک جدول فقط و فقط می تواند یک کلاستر ایندکس داشته باشد
Non Clustered Index
در این نوع ایندکس کلید ایندکس مورد نظر شما به همراه یکسری دیتا دیگر (مانند کلید کلاستر ایندکس + فیلدهای کاور ایندکس و...)   در یک فضای دیگر جدای از فضای جدول ذخیره می شود. این نوع ایندکس با کلاستر ایندکس شما ارتباط دارد
اما چه زمانی باید این نوع ایندکس  رو ایجاد کنیم 
در واقع زمانی که ما می خواهیم سرعت بدست آوردن رکوردها در جداول بالا رود یکی از کارهایی که انجام می دهیم استفاده از این نوع ایندکس ها می باشد
اگر بخواهی بفهمی که الان بانک اطلاعاتی شما به چه تعداد ایندکس از این نوع نیاز داره کافی که این فیلم فارسی رو یه نگاهی بیاندازی 
این فیلم در مورد Missing Index توضیح داده و به شما می گه که چه طور ایندکس هایی که روی بانک اطلاعاتی شما وجود نداره و خود SQL اونها رو توصیه می کنه بدست بیارم این ایندکس ها از نوع Non Clustered هستند

----------


## rahimi.mohamad24

> 3--آیا درست کردن non clustered index ، همون تعیین type:Index , isUnique :True است؟ نادرست است


پس چه شکلی توسط ویزارد بالا که عکسشو گذاشتم،non Clusterd index دزست کنم؟میشه بگید چیارو باید set کنم؟

----------

