دسته بندی ها
14:02 1399/10/09

تفاوت ایندکس Clustered و non Clustered در Sql Server چیست ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Sql Server

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 9936
هوش مصنوعی

پاسخ هوش مصنوعی

در SQL Server، ایندکس ها به دو نوع کلستر (Clustered) و نون کلستر (Non-Clustered) تقسیم می شوند. تفاوت های اصلی این دو نوع ایندکس به شرح زیر است:

ایندکس Clustered:

  • این نوع ایندکس ترتیب فیزیکی داده ها را در جدول تغییر می دهد. به عبارت دیگر، داده ها بر اساس ایندکس ذخیره می شوند.
  • یک جدول فقط می تواند یک ایندکس Clustered داشته باشد زیرا فقط می تواند یک ترتیب فیزیکی برای داده ها وجود داشته باشد.
  • ایندکس Clustered معمولاً برای ستون هایی که به طور مکرر در جستجوها و دستورات ORDER BY استفاده می شوند، مناسب است.
  • زمانی که به سرعت بالا در جستجو و بازیابی داده ها نیاز دارید، از ایندکس Clustered استفاده می کنید.

ایندکس Non-Clustered:

  • ایندکس نون کلستر داده ها را به صورت جداگانه از خود داده ها ذخیره می کند. بنابراین، می توانید چندین ایندکس Non-Clustered بر روی یک جدول داشته باشید.
  • این ایندکس حاوی مراجع به مکان داده های اصلی است و معمولاً شامل ستون های اضافی برای افزایش سرعت جستجو است.
  • ایندکس Non-Clustered برای جستجوهای خاصی که نیاز به انتخاب تعداد کمتری از ستون ها دارند، مناسب است.
  • زمانی که نیاز به جستجو در ستون های متعددی دارید، از ایندکس Non-Clustered بهره ببرید.

به طور کلی، ایندکس Clustered برای مواقعی که به ترتیب و سرعت بالا در داده ها نیاز دارید، مناسب است و ایندکس Non-Clustered برای جستجوهای خاص و متنوع بر روی ستون ها استفاده می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
هوش مصنوعی

پاسخ هوش مصنوعی

در SQL Server، ایندکس ها برای بهبود عملکرد جستجوها و بازیابی داده ها استفاده می شوند. دو نوع اصلی از ایندکس ها وجود دارند: ایندکس Clustered و ایندکس Non-Clustered. در ادامه به تفاوت های آن ها و زمان مناسب استفاده از هر یک اشاره می کنم.

ایندکس Clustered:

ایندکس Clustered به طور مستقیم بر روی داده های جدول تأثیر می گذارد و ترتیب داده ها را در جدول تغییر می دهد. در واقع، داده ها در دیسک به ترتیب ایندکس Clustered ذخیره می شوند. یک جدول فقط می تواند یک ایندکس Clustered داشته باشد.

ویژگی های ایندکس Clustered:

  • داده ها به ترتیب ایندکس ذخیره می شوند.
  • یک جدول می تواند فقط یک ایندکس Clustered داشته باشد.
  • بهترین گزینه برای جستجوهای محدوده ای و مرتب سازی داده ها.

ایندکس Non-Clustered:

ایندکس Non-Clustered یک ساختار جداگانه است که به داده های اصلی جدول اشاره می کند. در این ایندکس، داده ها به صورت جداگانه ذخیره می شوند و می تواند چندین ایندکس Non-Clustered بر روی یک جدول وجود داشته باشد.

ویژگی های ایندکس Non-Clustered:

  • داده ها به ترتیب ایندکس ذخیره نمی شوند، بلکه به صورت مجزا ذخیره می شوند.
  • یک جدول می تواند چندین ایندکس Non-Clustered داشته باشد.
  • مناسب برای جستجوهای خاص و بهبود عملکرد بازیابی داده.

زمان مناسب استفاده:

  • از ایندکس Clustered زمانی استفاده کنید که نیاز دارید داده ها به صورت مرتب و در محدوده ای خاص جستجو شوند.
  • از ایندکس Non-Clustered زمانی استفاده کنید که نیاز به جستجو بر روی ستون های خاصی دارید که در ایندکس Clustered نمی گنجند و می خواهید بهبود عملکرد جستجو را در این زمینه بدست آورید.
به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : pedram_khan 16:22 1399/10/09

تفاوت ایندکس Clustered و non Clustered در Sql Server چیست ؟

تفاوت ایندکس Clustered و non Clustered

 

به طور کلی در Sql Server دو نوع ایندکس می توان ایجاد کرد.

  • Clustered Index
  • non Clustered Index

ایندکس های Clustered به صورت اتوماتیک و با ایجاد کلید اصلی و بر روی کلید اصلی جدول ایجاد می شوند و وجود این ایندکس اجباری می باشد ولی ایندکس های non Clustered با توجه به نیاز جدول یا دیتابیس و به صورت دلخواه ایجاد می شود. (نحوه ایجاد ایندکس در Sql Server)

 

ایندکس های Clustered و non Clustered چه تفاوت هایی با هم دارند

موارد زیر از جمله مهم ترین تفاوت های بین ایندکس های Clustered و non Clustered می باشد.

  • ایندکس های Clustered اجباری می باشند و بر روی کلید اصلی همه جداول ایجاد می شود. ولی ایندکس های Non Clustered اختیاری می باشد.
  • در هر جدول فقط می توان یک ایندکس Clustered ایجاد کرد ولی ایندکس Non Clustered می تواند چند تا هم باشد.
  • ایندکس Clustered برای عملیات read بسیار پر سرعتتر می باشد. ولی ایندکس های Non Clustered برای عملیات Insert و Update می توانند بسیار سریعتر عمل کنند.
  • ایندکس های Clustered اطلاعات جدول را بر اساس فیلد تعیین شده (معمولا کلید اصلی) مرتب سازی می کنند اما در non Clustered نظم اطلاعات تغییر نمی کند.
  • یک تفاوت خیلی مهم این است که ایندکس Clustered هیچ فضایی برای نگهدار اطلاعات مرتب شده نیاز ندارند. اما ایندکس های non Clustered اطلاعات را بر روی صفحات حافظه مرتب سازی می کند و نیاز به فضای ذخیره سازی دارد. توجه کنید که ایجاد ایندکس های non Clustered باید حتما با دانش و دقت انجام شود چون این نوع از ایندکس ها در صورت اشتباه ایجاد شدن می توانند حتی باعث کند شدن دسترسی به اطلاعات نیز شوند.
  • از نظر Performance ایندکس های Clustered سرعت دسترسی به اطلاعات را بسیار بهبود می بخشند ولی ایندکی های non Clustered سرعت ویرایش و ذخیره سازی اطلاعات را بهبود می بخشند.
  • ایندکس Clustered حتما باید بر روی فیلدی ایجاد شود که حاوی اطلاعات unique می باشد.

 

نحوه کار ایندکس های Clustered و Non Clustered در Sql Server چگونه می باشد

در ادامه 2 تصویر در مورد نحوه کار ایندکس های Clustered و non Clustered قرار می دهم. این 2 تصویر را نگاه کنید متوجه نحوه کار و مرتب سازی این نوع از ایندکس ها می شوید.

 

نحوه کار ایندکس های Clustered

در واقع می توان گفت ایندکس های Clustered یک اشاره گر به رکوردها می باشد.

نحوه کار ایندکس های Clustered

 

نحوه کار ایندکس های non Clustered

در این نوع از ایندکس، ایندکس ها حاوی اشاره گر به رکوردها می باشند.

نحوه کار ایندکس های non clustered

به این پاسخ امتیاز بدهید    1
امتیاز: 277 رتبه: 6
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود