افزایش سرعت کوئری و خواندن نقشهی اجرا
ایندکس در SQL Server نیز مانند سایر پایگاههای داده، ساختاری است که سرعت جستوجو، فیلتر و مرتبسازی را افزایش میدهد. دو نوع اصلی ایندکس وجود دارد: Clustered Index که ترتیب فیزیکی داده روی دیسک را تعیین میکند (هر جدول فقط یکی میتواند داشته باشد و معمولاً روی کلید اصلی ساخته میشود) و Nonclustered Index که ساختار جداگانهای جدا از دادهی اصلی است:
CREATE NONCLUSTERED INDEX IX_Orders_CustomerId ON Orders(CustomerId);
CREATE NONCLUSTERED INDEX IX_Products_Category_Price ON Products(CategoryId, Price);
برای بررسی نحوهی اجرای یک کوئری، در SSMS میتوانید گزینهی «Include Actual Execution Plan» را فعال کنید یا از دستور زیر استفاده کنید:
SET STATISTICS IO ON;
SELECT * FROM Orders WHERE CustomerId = 42;
در نقشهی اجرا، عملیاتهایی مانند Table Scan (پیمایش کل جدول) نشانهی نبود ایندکس مناسب است، در حالی که Index Seek نشان میدهد SQL Server بهطور مستقیم و سریع ردیف موردنظر را پیدا کرده است. هزینهی نسبی (Cost %) کنار هر مرحله به شما کمک میکند بخشهای پرهزینهی کوئری را شناسایی کنید.
باید توجه داشت ساخت بیرویهی ایندکس، عملیات نوشتن را کند میکند و فضای دیسک بیشتری مصرف میکند؛ بنابراین ایندکس باید بر اساس کوئریهای واقعی و پرتکرار برنامه طراحی شود، نه بهصورت حدسی.