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 دارد.
