انواع ایندکس در پایگاه داده SQL Server

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

توسط admin | گروه SQL Server | 1403/08/09

نظرات 0

ایندکس‌ها در SQL Server ابزارهایی هستند که برای بهینه‌سازی و افزایش سرعت دسترسی به داده‌ها استفاده می‌شوند. هر نوع ایندکس ویژگی‌ها و کاربردهای خاص خود را دارد. در ادامه به معرفی انواع ایندکس در SQL Server به همراه مثال و توضیحات کامل می‌پردازیم:


1. Clustered Index (ایندکس کلاستر)

ایندکس کلاستر داده‌های جدول را بر اساس کلید ایندکس مرتب و ذخیره می‌کند. هر جدول تنها یک ایندکس کلاستر می‌تواند داشته باشد، زیرا نحوهٔ ذخیره‌سازی فیزیکی داده‌ها را تعیین می‌کند.

  • مثال: فرض کنیم یک جدول Orders داریم و می‌خواهیم یک ایندکس کلاستر روی ستون OrderID ایجاد کنیم که شناسهٔ منحصر به فرد هر سفارش است.

    sql
     
    -- ایجاد ایندکس کلاستر بر روی OrderID
    CREATE CLUSTERED INDEX IX_Orders_OrderID
    ON Orders (OrderID);

2. Non-Clustered Index (ایندکس غیرکلاستر)

ایندکس غیرکلاستر ساختاری جدا از جدول اصلی ایجاد می‌کند و شامل اشاره‌گرهایی به ردیف‌های جدول می‌شود. شما می‌توانید چندین ایندکس غیرکلاستر روی یک جدول داشته باشید.

  • مثال: یک ایندکس غیرکلاستر روی CustomerID ایجاد می‌کنیم تا جستجوهای مبتنی بر این ستون سریع‌تر شوند.

    sql
     
    -- ایجاد ایندکس غیرکلاستر روی CustomerID
    CREATE NONCLUSTERED INDEX IX_Orders_CustomerID
    ON Orders (CustomerID);

3. Unique Index (ایندکس یکتا)

ایندکس یکتا اطمینان حاصل می‌کند که تمام مقادیر در ستون یا ستون‌های ایندکس‌شده یکتا باشند. این ایندکس می‌تواند کلاستر یا غیرکلاستر باشد.

  • مثال: ایجاد ایندکس یکتا روی ستون Email در جدول Customers که از تکراری بودن ایمیل‌ها جلوگیری می‌کند.

    sql
     
    -- ایجاد ایندکس یکتا بر روی Email
    CREATE UNIQUE INDEX IX_Customers_Email
    ON Customers (Email);

4. Filtered Index (ایندکس فیلتر شده)

ایندکس فیلتر شده، یک ایندکس غیرکلاستر است که فقط شامل ردیف‌هایی می‌شود که یک شرط خاص را برآورده می‌کنند. این نوع ایندکس برای جستجوی زیرمجموعه‌ای خاص از داده‌ها مفید است.

  • مثال: فرض کنیم می‌خواهیم ایندکسی فقط برای سفارش‌های با ارزش بالا (بیش از ۱۰۰۰ دلار) داشته باشیم. می‌توانیم از یک ایندکس فیلتر شده روی OrderAmount استفاده کنیم.

    sql
     
    -- ایجاد ایندکس فیلتر شده برای سفارش‌های با ارزش بالا
    CREATE NONCLUSTERED INDEX IX_Orders_HighValue
    ON Orders (OrderAmount)
    WHERE OrderAmount > 1000;

5. Covering Index (ایندکس کاورینگ)

ایندکس کاورینگ شامل تمام ستون‌های مورد نیاز برای اجرای یک پرس‌وجو است، بنابراین SQL Server می‌تواند نتیجه را مستقیماً از ایندکس دریافت کند و نیازی به دسترسی به جدول اصلی ندارد. این کار از طریق اضافه کردن ستون‌ها به قسمت INCLUDE انجام می‌شود.

  • مثال: یک ایندکس کاورینگ برای پرس‌وجوهای مرتبط با CustomerID، OrderDate، و ShipCountry ایجاد می‌کنیم.

    sql
     
    -- ایجاد ایندکس کاورینگ
    CREATE NONCLUSTERED INDEX IX_Orders_Covering
    ON Orders (CustomerID)
    INCLUDE (OrderDate, ShipCountry);

6. Full-Text Index (ایندکس فول‌تکست)

ایندکس فول‌تکست برای جستجوهای پیچیده در داده‌های متنی استفاده می‌شود، مانند یافتن کلمات یا عبارات خاص در ستون‌های متنی بزرگ. این ایندکس برای جستجو در حجم زیادی از متن بهینه شده است.

  • مثال: فرض کنیم که می‌خواهیم در ستون Description جدول Products جستجو کنیم.

    sql
     
    -- فعال‌سازی ایندکس فول‌تکست در دیتابیس
    CREATE FULLTEXT CATALOG ProductCatalog;
     
    -- ایجاد ایندکس فول‌تکست بر روی Description
    CREATE FULLTEXT INDEX ON Products (Description)
    KEY INDEX PK_Products
    ON ProductCatalog;

7. XML Index (ایندکس XML)

ایندکس XML برای ایندکس‌بندی نوع داده XML در SQL Server استفاده می‌شود تا عملکرد پرس‌وجوهایی که روی ستون‌های XML انجام می‌شود بهبود یابد.

  • مثال: ایجاد ایندکس XML اولیه روی ستون ProductDetails در جدول Products.

    sql
     
    -- ایجاد ایندکس XML اولیه
    CREATE PRIMARY XML INDEX IX_Products_XML_ProductDetails
    ON Products (ProductDetails);

8. Spatial Index (ایندکس مکانی)

ایندکس مکانی برای نوع داده‌های مکانی، مانند geography یا geometry، طراحی شده است و برای داده‌های جغرافیایی و پرس‌وجوهای مکانی کاربرد دارد.

  • مثال: فرض کنیم ستونی به نام Location از نوع GEOGRAPHY داریم. می‌توانیم یک ایندکس مکانی روی آن ایجاد کنیم.

    sql
     
    -- ایجاد ایندکس مکانی بر روی یک ستون geography
    CREATE SPATIAL INDEX IX_Stores_Location
    ON Stores (Location);

هر نوع ایندکس برای کاربردهای خاصی بهینه شده است و بهبود عملکرد پرس‌وجوها را ممکن می‌سازد. استفاده از مثال‌ها و توضیحاتی برای هر نوع ایندکس به فهم بهتر و کارآمدتر کردن جستجوها کمک خواهد کرد.

 

0 نظر

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

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

حرف 500 حداکثر