راهنمای جامع انواع ایندکس در SQL Server؛ از B+Tree تا JSON و Vector DiskANN
مقدمه
ایندکس در SQL Server یک ساختار دسترسی است که میان سرعت خواندن، هزینه نوشتن، فضای ذخیرهسازی و پیچیدگی نگهداری تعادل ایجاد میکند. یک ایندکس مناسب میتواند میلیونها خواندن منطقی را به چند Seek محدود کند؛ ایندکس نامناسب نیز ممکن است فضای زیادی مصرف کند، Log را متورم سازد و زمان تراکنشهای OLTP را افزایش دهد. بنابراین پرسش حرفهای این نیست که آیا ایندکس سریع است؛ پرسش این است که کدام ساختار برای کدام Query، داده و SLA مناسبتر است.
این راهنما ۳۵ گونه و الگوی مهم ایندکس را از Rowstore خوشهای و غیرخوشهای تا Columnstore، XML، Spatial، Full-Text، Semantic، Memory-Optimized، JSON و Vector DiskANN دستهبندی میکند. هر مورد یک صفحه مستقل با Syntax، ده مثال، خروجی نمونه، خطا، Performance، FAQ و چکلیست استقرار دارد. لینکها از نگاشت قطعی همین مجموعه ساخته شدهاند.
قبل از هر تغییر، Query Store، Actual Execution Plan، STATISTICS IO/TIME، تعداد اجرای Query و اثر DML را ثبت کنید. ایندکس پیشنهادی DMV یا ابزار Tuning فقط یک فرضیه است؛ تکراری بودن، ترتیب کلید، ستونهای Include، فیلتر، Selectivity و هزینه نگهداری باید توسط متخصص تأیید شود.
دسترسی سریع
Rowstore و طراحی کلید
این گروه شامل 10 ساختار با هدف و هزینه متفاوت است. انتخاب باید بر اساس الگوی دسترسی، نسخه موتور و بار خواندن و نوشتن انجام شود.
ایندکس خوشهای (Clustered)
مرتبسازی فیزیکی سطح برگ دادههای جدول بر پایه کلید B+Tree. کاربرد شاخص آن جستوجوی بازهای، مرتبسازی و بازیابی ردیفهای پیوسته است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس خوشهای با مثالهای عملی
ایندکس غیرخوشهای (Nonclustered)
ساختار B+Tree جدا از داده که کلید و نشانگر ردیف را نگه میدارد. کاربرد شاخص آن جستوجوی انتخابی، Join و کاهش Table Scan است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس غیرخوشهای با مثالهای عملی
ایندکس فیلترشده (Filtered)
ایندکسگذاری فقط زیرمجموعهای از ردیفها با گزاره WHERE ثابت. کاربرد شاخص آن صفهای کاری، داده فعال و ستونهای Sparse یا دارای NULL زیاد است. محدودیت نسخه: SQL Server 2008 و نسخههای جدیدتر. آموزش کامل ایندکس فیلترشده با مثالهای عملی
ایندکس خوشهای یکتا (Unique Clustered)
ترکیب سازماندهی خوشهای با تضمین یکتایی کلید. کاربرد شاخص آن کلید طبیعی یکتا، ترتیب پایدار و حذف Uniqueifier پنهان است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس خوشهای یکتا با مثالهای عملی
ایندکس غیرخوشهای یکتا (Unique Nonclustered)
تضمین یکتایی مقدار بدون تغییر ساختار خوشهای جدول. کاربرد شاخص آن قواعد یکتایی ایمیل، کد ملی، شماره سند و کلید تجاری است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس غیرخوشهای یکتا با مثالهای عملی
ایندکس مرکب (Composite)
کلید چندستونی با ترتیب مشخص و اثر اصل Leftmost Prefix. کاربرد شاخص آن فیلتر و مرتبسازی چندستونی مطابق الگوی واقعی Query است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس مرکب با مثالهای عملی
ایندکس پوشاننده (Covering)
تأمین همه ستونهای موردنیاز Query از خود ایندکس و حذف Key Lookup. کاربرد شاخص آن گزارشهای پرتکرار و Queryهای خواندنی حساس به Lookup است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس پوشاننده با مثالهای عملی
ایندکس با ستونهای INCLUDE (Included-Column)
نگهداری ستونهای غیرکلیدی فقط در سطح برگ ایندکس. کاربرد شاخص آن پوشش Query بدون بزرگکردن کلید و بدون اثر بر ترتیب B+Tree است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس با ستونهای INCLUDE با مثالهای عملی
ایندکس ستون محاسباتی (Computed-Column)
ایندکسگذاری عبارت محاسبهشده قطعی با الزامات SET مشخص. کاربرد شاخص آن SARGable کردن تبدیلها، محاسبات و استخراج مقادیر پرتکرار است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر؛ تابع باید deterministic باشد. آموزش کامل ایندکس ستون محاسباتی با مثالهای عملی
نمای ایندکسشده (Indexed View)
مادیسازی نتیجه View با Unique Clustered Index و SET Optionهای اجباری. کاربرد شاخص آن تجمیع پرهزینه و Joinهای پرتکرار با هزینه نگهداری هنگام DML است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر؛ محدودیتهای تعریف View اعمال میشود. آموزش کامل نمای ایندکسشده با مثالهای عملی
Columnstore و تحلیل
این گروه شامل 6 ساختار با هدف و هزینه متفاوت است. انتخاب باید بر اساس الگوی دسترسی، نسخه موتور و بار خواندن و نوشتن انجام شود.
ایندکس ستونی (Columnstore)
ذخیره و فشردهسازی ستونی برای تحلیل حجیم و اجرای Batch Mode. کاربرد شاخص آن انبار داده، تجمیع حجیم و گزارشگیری تحلیلی است. محدودیت نسخه: SQL Server 2012 و نسخههای جدیدتر؛ قابلیتها وابسته به نسخهاند. آموزش کامل ایندکس ستونی با مثالهای عملی
ایندکس ستونی خوشهای (Clustered Columnstore)
قرار دادن کل جدول در قالب Columnstore فشرده و Rowgroup محور. کاربرد شاخص آن Fact Table بزرگ، اسکن و تجمیع تحلیلی با Batch Mode است. محدودیت نسخه: SQL Server 2014 و نسخههای جدیدتر؛ قابلیتها وابسته به نسخهاند. آموزش کامل ایندکس ستونی خوشهای با مثالهای عملی
ایندکس ستونی غیرخوشهای (Nonclustered Columnstore)
نسخه ستونی ثانویه روی جدول Rowstore برای Operational Analytics. کاربرد شاخص آن تحلیل نزدیک به بلادرنگ روی سامانه OLTP است. محدودیت نسخه: SQL Server 2012 و نسخههای جدیدتر؛ بهروزرسانیپذیری وابسته به نسخه است. آموزش کامل ایندکس ستونی غیرخوشهای با مثالهای عملی
ایندکس ستونی غیرخوشهای فیلترشده (Filtered Nonclustered Columnstore)
Columnstore ثانویه روی ردیفهای منتخب برای کنترل دامنه تحلیل. کاربرد شاخص آن تحلیل سفارشهای نهاییشده و جداسازی داده داغ از سرد است. محدودیت نسخه: SQL Server 2016 و نسخههای جدیدتر با قیود Filtered NCCI. آموزش کامل ایندکس ستونی غیرخوشهای فیلترشده با مثالهای عملی
ایندکس ستونی خوشهای مرتب (Ordered Clustered Columnstore)
Columnstore خوشهای با ORDER برای بهبود Segment Elimination. کاربرد شاخص آن فیلتر بازهای پرتکرار در انبار داده با پذیرش هزینه Build بیشتر است. محدودیت نسخه: SQL Server 2022 و نسخههای جدیدتر؛ قابلیت Ordering در نسخههای جدید توسعه یافته است. آموزش کامل ایندکس ستونی خوشهای مرتب با مثالهای عملی
ایندکس ستونی غیرخوشهای مرتب (Ordered Nonclustered Columnstore)
Nonclustered Columnstore دارای ترتیب داده برای حذف Segment مؤثرتر. کاربرد شاخص آن تحلیل ستونی هدفمند روی Rowstore با Predicateهای ترتیبی است. محدودیت نسخه: پشتیبانی و Syntax دقیق را با نسخه SQL Server مقصد تطبیق دهید. آموزش کامل ایندکس ستونی غیرخوشهای مرتب با مثالهای عملی
داده تخصصی XML، مکانی و متن
این گروه شامل 13 ساختار با هدف و هزینه متفاوت است. انتخاب باید بر اساس الگوی دسترسی، نسخه موتور و بار خواندن و نوشتن انجام شود.
ایندکس XML (XML)
خانواده ایندکسهای Primary و Secondary برای شتاب دادن متدهای نوع داده xml. کاربرد شاخص آن پرسوجوی exist، value، query و nodes روی اسناد XML است. محدودیت نسخه: SQL Server 2005 و نسخههای جدیدتر. آموزش کامل ایندکس XML با مثالهای عملی
ایندکس مکانی (Spatial)
تسریع فیلتر مکانی روی دادههای geometry و geography با Tessellation. کاربرد شاخص آن جستوجوی تقاطع، فاصله، همپوشانی و محدوده جغرافیایی است. محدودیت نسخه: SQL Server 2008 و نسخههای جدیدتر. آموزش کامل ایندکس مکانی با مثالهای عملی
ایندکس جستوجوی تماممتن (Full-Text)
توکنسازی زبانی و جستوجوی واژه، عبارت، صرف و نزدیکی در متن. کاربرد شاخص آن جستوجوی محتوایی با CONTAINS و FREETEXT است. محدودیت نسخه: نیازمند نصب Full-Text Search و Full-Text Catalog. آموزش کامل ایندکس جستوجوی تماممتن با مثالهای عملی
ایندکس XML اولیه (Primary XML)
Shredding پایدار گرهها و پایه اجباری ایندکسهای XML ثانویه. کاربرد شاخص آن کاهش هزینه پیمایش مکرر ساختار XML است. محدودیت نسخه: نیازمند Clustered Primary Key روی جدول و ستون xml. آموزش کامل ایندکس XML اولیه با مثالهای عملی
ایندکس ثانویه XML از نوع PATH (XML PATH)
بهینهسازی عبارتهای مسیر و متد exist روی XML. کاربرد شاخص آن جستوجوی مسیرهای ناشناخته و Predicateهای exist است. محدودیت نسخه: پس از Primary XML Index ساخته میشود. آموزش کامل ایندکس ثانویه XML از نوع PATH با مثالهای عملی
ایندکس ثانویه XML از نوع VALUE (XML VALUE)
بهینهسازی جستوجوی مقدار زمانی که مسیر دقیق یا ثابت نیست. کاربرد شاخص آن پیدا کردن مقدار در گرههای متعدد XML است. محدودیت نسخه: پس از Primary XML Index ساخته میشود. آموزش کامل ایندکس ثانویه XML از نوع VALUE با مثالهای عملی
ایندکس ثانویه XML از نوع PROPERTY (XML PROPERTY)
بهینهسازی بازیابی چند خاصیت از یک شیء XML مشخص. کاربرد شاخص آن Property Bag و واکشی چند value از مسیر ثابت است. محدودیت نسخه: پس از Primary XML Index ساخته میشود. آموزش کامل ایندکس ثانویه XML از نوع PROPERTY با مثالهای عملی
ایندکس انتخابی XML (Selective XML)
ایندکسگذاری فقط مسیرهای منتخب XML برای کاهش فضا و هزینه نگهداری. کاربرد شاخص آن Queryهای XML با مجموعه مسیر مشخص و پایدار است. محدودیت نسخه: SQL Server 2012 و نسخههای جدیدتر؛ مسیر و نوعدهی باید دقیق باشد. آموزش کامل ایندکس انتخابی XML با مثالهای عملی
ایندکس انتخابی XML ثانویه (Secondary Selective XML)
ساختار ثانویه روی Selective XML برای یک مسیر Promote شده. کاربرد شاخص آن شتاب بیشتر یک الگوی دسترسی مشخص روی مسیرهای Promote شده است. محدودیت نسخه: پس از Selective XML Index و با نام مسیر Promote شده ساخته میشود. آموزش کامل ایندکس انتخابی XML ثانویه با مثالهای عملی
ایندکس مکانی Geometry (Geometry Spatial)
ایندکس فضای مسطح برای مختصات هندسی و عملیات توپولوژیک. کاربرد شاخص آن نقشه محلی، CAD، محدوده و تقاطع در صفحه اقلیدسی است. محدودیت نسخه: SQL Server 2012 و نسخههای جدیدتر برای AUTO_GRID. آموزش کامل ایندکس مکانی Geometry با مثالهای عملی
ایندکس مکانی Geography (Geography Spatial)
ایندکس مدل بیضوی زمین برای طول و عرض جغرافیایی. کاربرد شاخص آن فاصله زمینی، شعاع خدمات و نزدیکترین شعبه است. محدودیت نسخه: SQL Server 2012 و نسخههای جدیدتر برای AUTO_GRID. آموزش کامل ایندکس مکانی Geography با مثالهای عملی
ایندکس معنایی عبارت کلیدی (Semantic Key-Phrase)
استخراج آماری عبارتهای کلیدی روی زیرساخت Full-Text و Semantic Search. کاربرد شاخص آن کشف موضوع و عبارت شاخص با semantickeyphrasetable است. محدودیت نسخه: نیازمند Full-Text and Semantic Extractions و پایگاه آمار معنایی. آموزش کامل ایندکس معنایی عبارت کلیدی با مثالهای عملی
ایندکس معنایی شباهت سند (Semantic Document-Similarity)
محاسبه شباهت اسناد بر پایه مدل آماری Semantic Search. کاربرد شاخص آن پیشنهاد محتوای مشابه و تحلیل نزدیکی اسناد است. محدودیت نسخه: نیازمند Full-Text and Semantic Extractions و sematicsdb. آموزش کامل ایندکس معنایی شباهت سند با مثالهای عملی
پارتیشن و حافظهبهینه
این گروه شامل 4 ساختار با هدف و هزینه متفاوت است. انتخاب باید بر اساس الگوی دسترسی، نسخه موتور و بار خواندن و نوشتن انجام شود.
ایندکس Hash حافظهبهینه (Hash (Memory-Optimized))
نگاشت سطلی برای برابری دقیق روی جدولهای Memory-Optimized. کاربرد شاخص آن جستوجوی مساوی بسیار سریع در In-Memory OLTP است. محدودیت نسخه: SQL Server 2014 و نسخههای جدیدتر با Memory-Optimized Filegroup. آموزش کامل ایندکس Hash حافظهبهینه با مثالهای عملی
ایندکس پارتیشنبندیشده همتراز (Partitioned Aligned)
استفاده از Partition Scheme و مرزهای یکسان با جدول پایه. کاربرد شاخص آن Partition Elimination، Sliding Window و نگهداری پارتیشن مستقل است. محدودیت نسخه: نیازمند Partition Function و Partition Scheme سازگار. آموزش کامل ایندکس پارتیشنبندیشده همتراز با مثالهای عملی
ایندکس پارتیشنبندیشده ناهمتراز (Partitioned Nonaligned)
چیدمان یا کلید پارتیشن ایندکس متفاوت از جدول پایه. کاربرد شاخص آن الگوی دسترسی متفاوت با پذیرش محدودیت Switch و نگهداری پیچیدهتر است. محدودیت نسخه: نیازمند طراحی دقیق Partition Scheme و عملیات نگهداری. آموزش کامل ایندکس پارتیشنبندیشده ناهمتراز با مثالهای عملی
ایندکس غیرخوشهای حافظهبهینه (Memory-Optimized Nonclustered)
ساختار Bw-Tree مناسب Range Scan روی جدول Memory-Optimized. کاربرد شاخص آن Range Query، مرتبسازی و مقایسههای غیرمساوی در In-Memory OLTP است. محدودیت نسخه: SQL Server 2014 و نسخههای جدیدتر با Memory-Optimized Filegroup. آموزش کامل ایندکس غیرخوشهای حافظهبهینه با مثالهای عملی
قابلیتهای جدید JSON و Vector
این گروه شامل 2 ساختار با هدف و هزینه متفاوت است. انتخاب باید بر اساس الگوی دسترسی، نسخه موتور و بار خواندن و نوشتن انجام شود.
ایندکس JSON (JSON Index)
ایندکس بومی مسیرهای JSON برای جستوجوی سریع در SQL Server 2025. کاربرد شاخص آن فیلتر و جستوجوی مسیرهای JSON روی nvarchar یا نوع json است. محدودیت نسخه: SQL Server 2025 (17.x)؛ وضعیت Preview و Syntax را با Build مقصد کنترل کنید. آموزش کامل ایندکس JSON با مثالهای عملی
ایندکس برداری DiskANN (Vector DiskANN Index)
گراف DiskANN برای جستوجوی تقریبی نزدیکترین همسایه روی نوع vector. کاربرد شاخص آن جستوجوی معنایی، RAG و بازیابی مشابهت در مقیاس بزرگ است. محدودیت نسخه: SQL Server 2025 (17.x)؛ PREVIEW_FEATURES و حداقل داده لازم را کنترل کنید. آموزش کامل ایندکس برداری DiskANN با مثالهای عملی
جدول مقایسه تمام انواع ایندکس
| نوع ایندکس | کاربرد اصلی | نسخه یا نکته مهم | لینک آموزش کامل |
|---|
| Clustered | جستوجوی بازهای، مرتبسازی و بازیابی ردیفهای پیوسته | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Nonclustered | جستوجوی انتخابی، Join و کاهش Table Scan | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Columnstore | انبار داده، تجمیع حجیم و گزارشگیری تحلیلی | SQL Server 2012 و نسخههای جدیدتر؛ قابلیتها وابسته به نسخهاند | مشاهده آموزش کامل |
| Filtered | صفهای کاری، داده فعال و ستونهای Sparse یا دارای NULL زیاد | SQL Server 2008 و نسخههای جدیدتر | مشاهده آموزش کامل |
| XML | پرسوجوی exist، value، query و nodes روی اسناد XML | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Spatial | جستوجوی تقاطع، فاصله، همپوشانی و محدوده جغرافیایی | SQL Server 2008 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Full-Text | جستوجوی محتوایی با CONTAINS و FREETEXT | نیازمند نصب Full-Text Search و Full-Text Catalog | مشاهده آموزش کامل |
| Hash (Memory-Optimized) | جستوجوی مساوی بسیار سریع در In-Memory OLTP | SQL Server 2014 و نسخههای جدیدتر با Memory-Optimized Filegroup | مشاهده آموزش کامل |
| Unique Clustered | کلید طبیعی یکتا، ترتیب پایدار و حذف Uniqueifier پنهان | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Unique Nonclustered | قواعد یکتایی ایمیل، کد ملی، شماره سند و کلید تجاری | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Composite | فیلتر و مرتبسازی چندستونی مطابق الگوی واقعی Query | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Covering | گزارشهای پرتکرار و Queryهای خواندنی حساس به Lookup | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Included-Column | پوشش Query بدون بزرگکردن کلید و بدون اثر بر ترتیب B+Tree | SQL Server 2005 و نسخههای جدیدتر | مشاهده آموزش کامل |
| Computed-Column | SARGable کردن تبدیلها، محاسبات و استخراج مقادیر پرتکرار | SQL Server 2005 و نسخههای جدیدتر؛ تابع باید deterministic باشد | مشاهده آموزش کامل |
| Indexed View | تجمیع پرهزینه و Joinهای پرتکرار با هزینه نگهداری هنگام DML | SQL Server 2005 و نسخههای جدیدتر؛ محدودیتهای تعریف View اعمال میشود | مشاهده آموزش کامل |
| Partitioned Aligned | Partition Elimination، Sliding Window و نگهداری پارتیشن مستقل | نیازمند Partition Function و Partition Scheme سازگار | مشاهده آموزش کامل |
| Partitioned Nonaligned | الگوی دسترسی متفاوت با پذیرش محدودیت Switch و نگهداری پیچیدهتر | نیازمند طراحی دقیق Partition Scheme و عملیات نگهداری | مشاهده آموزش کامل |
| Clustered Columnstore | Fact Table بزرگ، اسکن و تجمیع تحلیلی با Batch Mode | SQL Server 2014 و نسخههای جدیدتر؛ قابلیتها وابسته به نسخهاند | مشاهده آموزش کامل |
| Nonclustered Columnstore | تحلیل نزدیک به بلادرنگ روی سامانه OLTP | SQL Server 2012 و نسخههای جدیدتر؛ بهروزرسانیپذیری وابسته به نسخه است | مشاهده آموزش کامل |
| Filtered Nonclustered Columnstore | تحلیل سفارشهای نهاییشده و جداسازی داده داغ از سرد | SQL Server 2016 و نسخههای جدیدتر با قیود Filtered NCCI | مشاهده آموزش کامل |
| Ordered Clustered Columnstore | فیلتر بازهای پرتکرار در انبار داده با پذیرش هزینه Build بیشتر | SQL Server 2022 و نسخههای جدیدتر؛ قابلیت Ordering در نسخههای جدید توسعه یافته است | مشاهده آموزش کامل |
| Ordered Nonclustered Columnstore | تحلیل ستونی هدفمند روی Rowstore با Predicateهای ترتیبی | پشتیبانی و Syntax دقیق را با نسخه SQL Server مقصد تطبیق دهید | مشاهده آموزش کامل |
| Memory-Optimized Nonclustered | Range Query، مرتبسازی و مقایسههای غیرمساوی در In-Memory OLTP | SQL Server 2014 و نسخههای جدیدتر با Memory-Optimized Filegroup | مشاهده آموزش کامل |
| Primary XML | کاهش هزینه پیمایش مکرر ساختار XML | نیازمند Clustered Primary Key روی جدول و ستون xml | مشاهده آموزش کامل |
| XML PATH | جستوجوی مسیرهای ناشناخته و Predicateهای exist | پس از Primary XML Index ساخته میشود | مشاهده آموزش کامل |
| XML VALUE | پیدا کردن مقدار در گرههای متعدد XML | پس از Primary XML Index ساخته میشود | مشاهده آموزش کامل |
| XML PROPERTY | Property Bag و واکشی چند value از مسیر ثابت | پس از Primary XML Index ساخته میشود | مشاهده آموزش کامل |
| Selective XML | Queryهای XML با مجموعه مسیر مشخص و پایدار | SQL Server 2012 و نسخههای جدیدتر؛ مسیر و نوعدهی باید دقیق باشد | مشاهده آموزش کامل |
| Secondary Selective XML | شتاب بیشتر یک الگوی دسترسی مشخص روی مسیرهای Promote شده | پس از Selective XML Index و با نام مسیر Promote شده ساخته میشود | مشاهده آموزش کامل |
| Geometry Spatial | نقشه محلی، CAD، محدوده و تقاطع در صفحه اقلیدسی | SQL Server 2012 و نسخههای جدیدتر برای AUTO_GRID | مشاهده آموزش کامل |
| Geography Spatial | فاصله زمینی، شعاع خدمات و نزدیکترین شعبه | SQL Server 2012 و نسخههای جدیدتر برای AUTO_GRID | مشاهده آموزش کامل |
| Semantic Key-Phrase | کشف موضوع و عبارت شاخص با semantickeyphrasetable | نیازمند Full-Text and Semantic Extractions و پایگاه آمار معنایی | مشاهده آموزش کامل |
| Semantic Document-Similarity | پیشنهاد محتوای مشابه و تحلیل نزدیکی اسناد | نیازمند Full-Text and Semantic Extractions و sematicsdb | مشاهده آموزش کامل |
| JSON Index | فیلتر و جستوجوی مسیرهای JSON روی nvarchar یا نوع json | SQL Server 2025 (17.x)؛ وضعیت Preview و Syntax را با Build مقصد کنترل کنید | مشاهده آموزش کامل |
| Vector DiskANN Index | جستوجوی معنایی، RAG و بازیابی مشابهت در مقیاس بزرگ | SQL Server 2025 (17.x)؛ PREVIEW_FEATURES و حداقل داده لازم را کنترل کنید | مشاهده آموزش کامل |
شش مثال مدیریتی و کاربردی
مثال 1: یافتن ایندکسهای بدون استفاده
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SELECT OBJECT_SCHEMA_NAME(i.object_id) AS schema_name, OBJECT_NAME(i.object_id) AS table_name, i.name, s.user_seeks, s.user_scans, s.user_updates FROM sys.indexes AS i LEFT JOIN sys.dm_db_index_usage_stats AS s ON s.database_id=DB_ID() AND s.object_id=i.object_id AND s.index_id=i.index_id WHERE i.index_id>0 ORDER BY ISNULL(s.user_updates,0) DESC;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 1 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
مثال 2: کشف ایندکسهای همپوشان
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SELECT OBJECT_NAME(a.object_id) AS table_name, a.name AS index_a, b.name AS index_b FROM sys.indexes AS a JOIN sys.indexes AS b ON a.object_id=b.object_id AND a.index_id<b.index_id WHERE a.is_hypothetical=0 AND b.is_hypothetical=0;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 2 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
مثال 3: اندازهگیری حجم ایندکس
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SELECT OBJECT_NAME(ps.object_id) AS table_name, i.name, SUM(ps.used_page_count)*8.0/1024 AS used_mb FROM sys.dm_db_partition_stats AS ps JOIN sys.indexes AS i ON i.object_id=ps.object_id AND i.index_id=ps.index_id GROUP BY ps.object_id,i.name ORDER BY used_mb DESC;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 3 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
مثال 4: بررسی Fragmentation معنادار
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SELECT OBJECT_NAME(object_id) AS table_name, index_id, page_count, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED') WHERE page_count>=1000 ORDER BY avg_fragmentation_in_percent DESC;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 4 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
مثال 5: مقایسه IO قبل و بعد
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SET STATISTICS IO, TIME ON;
SELECT CustomerId, SUM(TotalAmount) FROM dbo.Sales WHERE OrderDate>='2026-01-01' AND OrderDate<'2027-01-01' GROUP BY CustomerId;
SET STATISTICS IO, TIME OFF;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 5 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
مثال 6: بررسی آمار ایندکس
این Query یک نمای اولیه برای تصمیمگیری فراهم میکند. خروجی را در بازه نماینده کسبوکار و همراه Query Store تحلیل کنید؛ Snapshot کوتاه یا داده پس از Restart مبنای حذف نیست.
SELECT OBJECT_NAME(i.object_id) AS table_name, i.name, STATS_DATE(i.object_id,i.index_id) AS stats_date FROM sys.indexes AS i WHERE i.index_id>0 ORDER BY stats_date;
| خروجی | کاربرد |
|---|
| گزارش مدیریتی 6 | تبدیل حدس به Baseline قابل مقایسه |
| گام بعد | اعتبارسنجی Plan و اثر عملیات نوشتن |
راهبرد انتخاب و استقرار
برای OLTP معمولاً ایندکسهای Rowstore باریک و انتخابی نقطه شروعاند. برای انبار داده، Columnstore و Partitioning میتوانند اسکن و نگهداری را متحول کنند. XML، Spatial، Full-Text و Semantic زمانی توجیه دارند که Query از عملگرهای تخصصی همان نوع استفاده کند. JSON و Vector نیز نسخهمحورند و نباید بدون بررسی Build و وضعیت Preview وارد Production شوند.
فرآیند ایمن شامل ثبت Baseline، ساخت در محیط آزمایش، بررسی پلن و پارامترهای متنوع، آزمون بار همزمان، محاسبه فضای Log و TempDB، تهیه Rollback و پایش پس از استقرار است. بهبود Median کافی نیست؛ صدکهای بالا، Blocking، Memory Grant و پایداری Plan نیز اهمیت دارند.
FAQ راهنمای انواع ایندکس
پرسش 1: بهترین ایندکس SQL Server کدام است؟
بهترین نوع مطلق وجود ندارد؛ الگوی Query، داده و SLA تعیینکننده است.
پرسش 2: آیا هر Foreign Key ایندکس لازم دارد؟
اغلب برای Join و جلوگیری از اسکن مفید است، اما باید با Query واقعی سنجیده شود.
پرسش 3: چند ایندکس برای یک جدول زیاد است؟
عدد ثابت وجود ندارد؛ همپوشانی، حجم و نسبت خواندن به نوشتن مهمتر است.
پرسش 4: ایندکس چه اثری بر INSERT دارد؟
هر ایندکس باید همراه ردیف تغییر کند و Log، قفل و CPU بیشتری مصرف میکند.
پرسش 5: Rebuild بهتر است یا Reorganize؟
انتخاب بر اساس حجم، Fragmentation، SLA و قابلیت Online یا Resumable است.
پرسش 6: آیا Missing Index DMV کافی است؟
خیر؛ پیشنهادها تجمیع و هزینه نوشتن را کامل در نظر نمیگیرند.
پرسش 7: چرا Index Seek همیشه سریع نیست؟
Seek ممکن است ردیفهای بسیار، Lookup زیاد یا تخمین اشتباه داشته باشد.
پرسش 8: Columnstore برای OLTP مناسب است؟
NCCI فیلترشده میتواند تحلیل عملیاتی بدهد، ولی باید DML و نسخه بررسی شود.
پرسش 9: چه زمانی ایندکس حذف شود؟
پس از مشاهده یک چرخه کامل کسبوکار، نبود ارزش و داشتن Rollback میتوان حذف کرد.
پرسش 10: آیا ارتقای نسخه روی ایندکس اثر دارد؟
بله؛ Optimizer، Cardinality Estimator و قابلیتهای ساخت و نگهداری تغییر میکنند.
سؤالات مصاحبه
- تفاوت Clustered و Heap در سطح برگ چیست؟
- چگونه Key Lookup را تشخیص و اصلاح میکنید؟
- Segment Elimination در Columnstore چگونه کار میکند؟
- چرا Usage DMV پس از Restart برای حذف ایندکس کافی نیست؟
- چه معیارهایی برای Online و Resumable Index Operation دارید؟
جمعبندی
طراحی ایندکس ترکیبی از شناخت ساختمان داده، Optimizer، رفتار کسبوکار و عملیات Production است. صفحات تخصصی این مجموعه برای هر نوع، مسیر مستقلی از Syntax تا اندازهگیری ارائه میکنند. تغییر را کوچک، قابل بازگشت و مبتنی بر شواهد نگه دارید.
در جمعبندی نیز میتوانید از فهرست زیر مستقیماً به هر آموزش بروید.