بهینهسازی Query چیست؟
فرایند شناسایی و اصلاح Queryهای کند دیتابیس با ابزارهایی مثل Execution Plan، Index مناسب و بازنویسی SQL.
چرا مهم است؟
یک Query کند در جایی که هزاران بار در روز اجرا میشود، میتواند تنها گلوگاه کارایی کل برنامه باشد؛ بهینهسازی هدفمند آن گاهی مؤثرتر از اضافهکردن سرور جدید است.
تعریف
بهینهسازی Query یعنی پیدا کردن دلیل کندی یک کوئری (با Execution Plan) و رفع آن — معمولاً با Index، بازنویسی SQL یا تغییر ساختار داده.
چکلیست عملی
- Execution Plan را بخوانید: دنبال
Table Scan/Index Scanروی جدولهای بزرگ بگردید — نشانه نبود Index مناسب. SELECT *را حذف کنید: فقط ستونهای لازم را بخوانید تا حجم داده منتقلشده کم شود.- از تابع روی ستون Indexدار پرهیز کنید:
-- بد: Index روی CreatedAt استفاده نمیشود WHERE YEAR(CreatedAt) = 2026 -- خوب: Index قابل استفاده است WHERE CreatedAt >= '2026-01-01' AND CreatedAt < '2027-01-01' - مشکل N+1 Query را در ORM بررسی کنید (هر ردیف یک Query جدا) و با
Include/Join جایگزین کنید.
ابزار
SQL Server Management Studio و Azure Data Studio با «Include Actual Execution Plan» دقیقاً نشان میدهند هزینه هر بخش Query کجاست.
اشتباه رایج
❌ اضافهکردن Index جدید بدون نگاه به Execution Plan، فقط حدسی — گاهی مشکل اصلی جای دیگری است و Index جدید فقط هزینه نوشتن را بالا میبرد بدون حل مشکل.
منبع و مطالعه بیشتر
خلاصه
بهینهسازی Query با خواندن Execution Plan شروع میشود، نه حدسزدن. حذف SELECT *، پرهیز از تابع روی ستون Indexدار و رفع N+1 Query سه اصلاح پرتکرار هستند. مرجع کامل: Microsoft Learn و use-the-index-luke.com.
