راهنمای جامع انواع ایندکس در SQL Server؛ از Clustered تا Vector DiskANN

راهنمای جامع انواع ایندکس در SQL Server؛ از Clustered تا Vector DiskANN

توسط admin | گروه SQL Server | 1405/04/29

نظرات 0

راهنمای جامع انواع ایندکس در 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 ScanSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Columnstoreانبار داده، تجمیع حجیم و گزارش‌گیری تحلیلیSQL Server 2012 و نسخه‌های جدیدتر؛ قابلیت‌ها وابسته به نسخه‌اندمشاهده آموزش کامل
Filteredصف‌های کاری، داده فعال و ستون‌های Sparse یا دارای NULL زیادSQL Server 2008 و نسخه‌های جدیدترمشاهده آموزش کامل
XMLپرس‌وجوی exist، value، query و nodes روی اسناد XMLSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Spatialجست‌وجوی تقاطع، فاصله، هم‌پوشانی و محدوده جغرافیاییSQL Server 2008 و نسخه‌های جدیدترمشاهده آموزش کامل
Full-Textجست‌وجوی محتوایی با CONTAINS و FREETEXTنیازمند نصب Full-Text Search و Full-Text Catalogمشاهده آموزش کامل
Hash (Memory-Optimized)جست‌وجوی مساوی بسیار سریع در In-Memory OLTPSQL Server 2014 و نسخه‌های جدیدتر با Memory-Optimized Filegroupمشاهده آموزش کامل
Unique Clusteredکلید طبیعی یکتا، ترتیب پایدار و حذف Uniqueifier پنهانSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Unique Nonclusteredقواعد یکتایی ایمیل، کد ملی، شماره سند و کلید تجاریSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Compositeفیلتر و مرتب‌سازی چندستونی مطابق الگوی واقعی QuerySQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Coveringگزارش‌های پرتکرار و Queryهای خواندنی حساس به LookupSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Included-Columnپوشش Query بدون بزرگ‌کردن کلید و بدون اثر بر ترتیب B+TreeSQL Server 2005 و نسخه‌های جدیدترمشاهده آموزش کامل
Computed-ColumnSARGable کردن تبدیل‌ها، محاسبات و استخراج مقادیر پرتکرارSQL Server 2005 و نسخه‌های جدیدتر؛ تابع باید deterministic باشدمشاهده آموزش کامل
Indexed Viewتجمیع پرهزینه و Joinهای پرتکرار با هزینه نگهداری هنگام DMLSQL Server 2005 و نسخه‌های جدیدتر؛ محدودیت‌های تعریف View اعمال می‌شودمشاهده آموزش کامل
Partitioned AlignedPartition Elimination، Sliding Window و نگهداری پارتیشن مستقلنیازمند Partition Function و Partition Scheme سازگارمشاهده آموزش کامل
Partitioned Nonalignedالگوی دسترسی متفاوت با پذیرش محدودیت Switch و نگهداری پیچیده‌ترنیازمند طراحی دقیق Partition Scheme و عملیات نگهداریمشاهده آموزش کامل
Clustered ColumnstoreFact Table بزرگ، اسکن و تجمیع تحلیلی با Batch ModeSQL Server 2014 و نسخه‌های جدیدتر؛ قابلیت‌ها وابسته به نسخه‌اندمشاهده آموزش کامل
Nonclustered Columnstoreتحلیل نزدیک به بلادرنگ روی سامانه OLTPSQL 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 NonclusteredRange Query، مرتب‌سازی و مقایسه‌های غیرمساوی در In-Memory OLTPSQL 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 PROPERTYProperty Bag و واکشی چند value از مسیر ثابتپس از Primary XML Index ساخته می‌شودمشاهده آموزش کامل
Selective XMLQueryهای 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 یا نوع jsonSQL 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 تا اندازه‌گیری ارائه می‌کنند. تغییر را کوچک، قابل بازگشت و مبتنی بر شواهد نگه دارید.

در جمع‌بندی نیز می‌توانید از فهرست زیر مستقیماً به هر آموزش بروید.

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620