CodeShot
Midسختی 3 از ۵· در 80٪ مصاحبه‌های این حوزه پرسیده شده

Index چیست و چه زمانی باید از آن استفاده کرد؟

نشان کردن

پاسخ کوتاه

ساختار داده‌ای که سرعت جست‌وجو روی یک یا چند ستون را افزایش می‌دهد، به قیمت کندتر شدن Insert/Update/Delete.

پاسخ کامل

Clustered Index ترتیب فیزیکی ردیف‌ها روی دیسک را مشخص می‌کند (هر جدول حداکثر یک Clustered Index دارد، معمولاً روی Primary Key).

Non-Clustered Index یک ساختار جدا شامل مقدار ستون + اشاره‌گر به ردیف اصلی است؛ یک جدول می‌تواند چند Non-Clustered Index داشته باشد.

Index روی ستون‌هایی که زیاد در WHERE/JOIN/ORDER BY استفاده می‌شوند مفید است؛ روی ستون‌هایی با نوشتن بسیار زیاد و خواندن کم، هزینهٔ نگهداری Index از فایده‌اش بیشتر می‌شود.

مثال کد

CREATE NONCLUSTERED INDEX IX_Orders_CustomerId ON Orders (CustomerId);

نکته مهم

ابزار Execution Plan در SSMS نشان می‌دهد آیا یک Query از Index استفاده می‌کند یا Table Scan می‌زند.

اشتباه رایج

❌ ساختن Index روی هر ستونی «برای احتیاط» — هر Index هزینهٔ نگهداری در هر Insert/Update دارد.