Execution Plan چیست؟
نقشهای که دیتابیس قبل از اجرای یک Query تولید میکند و نشان میدهد داده از کجا خوانده و چطور پردازش میشود — ابزار اصلی تشخیص علت کندی Query.
چرا مهم است؟
بدون خواندن Execution Plan، بهینهسازی Query صرفاً حدسزدن است؛ Execution Plan دقیقاً نشان میدهد کدام بخش Query گرانترین است و چرا.
تعریف
Execution Plan خروجی Query Optimizer دیتابیس است: نشان میدهد هر جدول چطور خوانده میشود (Scan یا Seek)، JOINها با کدام الگوریتم انجام میشوند و هزینه نسبی هر مرحله چقدر است.
نمونه خواندن Plan (SQL Server)
SET STATISTICS IO ON;
SELECT o.Id, c.Name
FROM Orders o
JOIN Customers c ON c.Id = o.CustomerId
WHERE o.Status = 'Paid';
با فعالکردن «Include Actual Execution Plan» در SSMS یا Azure Data Studio، خروجی گرافیکی نشان میدهد کدام عملگر (Operator) بیشترین درصد هزینه را دارد.
عملگرهای کلیدی برای توجه
- Table Scan / Clustered Index Scan: کل جدول خوانده میشود — معمولاً نشانه نبود Index مناسب.
- Index Seek: مستقیم به ردیف موردنیاز رسیده — حالت مطلوب.
- Key Lookup: بعد از Index Seek، دیتابیس مجبور شده برای ستونهای باقیمانده دوباره سراغ جدول اصلی برود — نشانه نیاز به Covering Index.
اشتباه رایج
❌ فقط نگاهکردن به «هزینه درصدی» بین چند Query در یک Batch بهعنوان معیار قطعی — این عدد نسبی و تخمینی است؛ برای مقایسه واقعی باید زمان اجرا و IO واقعی (STATISTICS TIME/IO) را هم بررسی کرد.
منبع و مطالعه بیشتر
خلاصه
Execution Plan نشان میدهد دیتابیس چطور یک Query را اجرا میکند: کدام Scan/Seek استفاده شده و هزینه هر مرحله چقدر است. Key Lookup مکرر معمولاً نشانه نیاز به Covering Index است. مرجع کامل: Microsoft Learn و Brent Ozar.
