۳.۷
(۱۹)

ایندکس در SQL درواقع یک ساختار داده‌ای بوده و بیشتر برای بهبود عملکرد جستجوها و مرتب‌سازی در پایگاه داده استفاده می‌شود. در این ویدئو درباره index در sql صحبت می‌کنیم و در ادامه نیز به معرفی Clustered Index می‌پردازیم.

دوره آموزشی Performance Tuning در SQL Server

ایندکس در SQL چیست؟

پیش از بررسی Clustered Index در SQL Server به بررسی ایندکس می‌پردازیم. ایندکس در SQL یک لیست مرتب‌شده از داده‌ها و دیتاها است که داده‌ها براساس یکسری قوانین عددی، رشته‌ای و تاریخ به‌صورت صعودی یا نزولی در آن مرتب شده‌اند.

انواع ایندکس در SQL

انواع مختلفی از ایندکس در SQL وجود دارد اما به‌طور کلی، به ۲ طبقه تقسیم می‌شوند:

  1.  ایندکس‌هایی که معماری آن‌ها بر پایه معماری دیسکی (Disk base) است.
  2.  ایندکس‌هایی که ساختار آن‌ها مبتنی‌بر تکنولوژی in-memory بوده که از SQL Server ۲۰۱۴ به بعد ارائه درحال ارائه هستند.

index در sql به‌صورت دیسکی، به ۲ حالت دسته‌بندی می‌شوند که یکی از آن‌ها row based است. در این حالت، سبک ذخیره‌سازی آن‌ها ردیفی بوده و داده‌ها می‌توانند شامل موارد زیر باشند که در مقاله بررسی جداول Heap و Clustered در SQL Server به‌طور کامل این دو مورد را بررسی می‌کنیم:

  • بدون نظم و ترتیب یا اصطلاحاً heep باشند.
  • درحالت Clustered Index قرار گیرند و دارای نظم باشند.

row based

Clustered Index چیست؟

زمانی که صحبت از Clustered Index می‌شود، به آن معناست که جدولی که داده‌ها در آن قرار دارد، Clustered table است. در این حالت، رکوردهای موجود در جدول دارای نظم و ترتیب هستند. یکی از ساختارهای ذخیره‌سازی داده در جداول کلاستر ایندکس است که براساس آن، داده‌ها در ازای یک فیلد خاص، که توسط ما مشخص می‌شود، دارای نظم و ترتیب است. در روش Clustered Index، همه‌‌ داده‌‌‌های یک جدول با یک ترتیب مشخص به‌صورت فیزیکی در هارد دیسک ذخیره خواهند شد؛ از این رو، یک جدول فقط یک کلاستر ایندکس دارد که برای تمام داده‌‌‌ها اعمال می‌‌‌شود.

عملاً زمانی که صحبت از ایندکس در SQL می‌شود، شما باید مرتب‌سازی صفحات کتاب رو درنظر بگیرید که وقتی کتابی را ورق می‌زنید، صفحات کتاب براساس شماره صفحه مرتب شده‌اند و به‌نوعی، هدف از ایندکس این است که اصل رکوردهای درون جدول را مرتب کند. به‌طور کلی، ویژگی‌های Clustered Index شامل:

  • رکوردها دارای نظم و ترتیب است.
  • مرتب‌سازی رکوردها براساس کلید ایندکس 
  • شبیه به مرتب‌سازی صفحات کتاب
  • مرتب‌سازی اصل رکوردهای جدول

Clustered Index چیست؟

Clustered Index و Primary Key

  • کنترل PK بااستفاده از Unique Clustered Index
  • کنترل Constraint بااستفاده از ایندکس
  • کارایی جدول = انتخاب PK مناسب

توجه به نوع ایندکس = افزایش کارایی PK

توجه داشته باشید ایندکسی که برای بحث PK انتخاب می‌کنیم، باید به‌شکل اصولی انتخاب شود و این ایندکس در SQL باعث می‌شود پرفورمنس جدول بالا رود و افزایش پیدا کند. همچنین می‌توانید با مراجعه به مقاله تفاوت Primary Key و Clustered Index اطلاعات بیشتری در این زمینه به‌دست آورید.

Clustered Index و Primary Key

نکات مهم در Clustered Index

درخصوص Clustered Index باید به چند نکته زیر توجه داشته باشید:

  • اگر یونیک بودن مقادیر امکان‌پذیر است، هنگام ایجاد ایندکس باید درنظر گرفته شود.
  • حجم ایندکس باید کم باشد.
  • تاجایی که امکان دارد، noindex عددی باشد و به شکل افزایشی درنظر گرفته شود.
  • به‌روزرسانی کمتری داشته باشد.

در ادامه و به‌عنوان نکته تکمیلی ایندکس در SQL حتماً به این نکته دقت کنید که پشت ساختارهای ذخیره‌سازی ایندکس‌ها، اصول ریاضی و درختی وجود دارد که مشابه تصویر زیر است.

ساختار درختی ایندکس در SQL

چه رتبه ای می‌دهید؟

میانگین ۳.۷ / ۵. از مجموع ۱۹

اولین نفر باش