رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
بهینه‌سازی کوئری‌های MySQL: تکنیک‌ها و ابزارهای عملی برای افزایش سرعت

بهینه‌سازی کوئری‌های MySQL: تکنیک‌ها و ابزارهای عملی برای افزایش سرعت

پایگاه داده
2 دقیقه مطالعه

آموزش تکنیک‌های عملی بهینه‌سازی کوئری‌های MySQL شامل ایندکس‌گذاری، استفاده از EXPLAIN و شناسایی کوئری‌های کند برای افزایش سرعت پایگاه داده.

بهینه‌سازی کوئری‌های MySQL: تکنیک‌ها و ابزارهای عملی برای افزایش سرعت

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

شناسایی کوئری‌های کند با Slow Query Log

اولین قدم در بهینه‌سازی، شناسایی کوئری‌های مشکل‌دار است. MySQL امکان ثبت کوئری‌هایی که بیشتر از زمان مشخصی طول می‌کشند را فراهم می‌کند:

3 خط
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

استفاده از EXPLAIN برای تحلیل کوئری

دستور EXPLAIN نشان می‌دهد که MySQL چگونه یک کوئری را اجرا می‌کند و آیا از ایندکس استفاده می‌شود یا خیر:

EXPLAIN SELECT * FROM orders WHERE customer_id = 1024;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اگر ستون type در خروجی مقدار ALL باشد، به معنای اسکن کامل جدول (Full Table Scan) است که معمولاً نشانه نبود ایندکس مناسب است.

ایندکس‌گذاری صحیح

نوع ایندکسکاربرد
Single Column Indexبهینه‌سازی کوئری‌هایی که روی یک ستون خاص فیلتر می‌کنند
Composite Indexبهینه‌سازی کوئری‌هایی که چند ستون را همزمان در WHERE یا ORDER BY استفاده می‌کنند
Unique Indexتضمین یکتایی مقادیر و افزایش سرعت جستجو در ستون‌های کلیدی
2 خط
CREATE INDEX idx_customer_id ON orders(customer_id);
CREATE INDEX idx_customer_date ON orders(customer_id, order_date);
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سایر تکنیک‌های بهینه‌سازی

  • پرهیز از استفاده از SELECT * و انتخاب فقط ستون‌های موردنیاز
  • استفاده از LIMIT برای کاهش حجم داده بازگشتی در کوئری‌های صفحه‌بندی‌شده
  • اجتناب از کوئری‌های تو در تو (Subquery) غیرضروری و استفاده از JOIN به‌جای آن در موارد مناسب؛ جزئیات بیشتر در مقاله آموزش استفاده از کوئری‌های تو در تو در SQL آمده است.
  • پایش منظم سلامت جداول برای جلوگیری از خرابی و افت عملکرد؛ روش تشخیص و رفع این مشکل در مقاله آموزش رفع خرابی جدول‌ها در MySQL توضیح داده شده است.

جمع‌بندی

بهینه‌سازی کوئری یک فرآیند مداوم است که با پایش منظم، استفاده صحیح از EXPLAIN و ایندکس‌گذاری هوشمندانه می‌توان سرعت پاسخ‌دهی پایگاه داده را به‌طور قابل‌توجهی بهبود بخشید.

بهینه‌سازی کوئری در کنار معماری Replication

پس از بهینه‌سازی کوئری‌ها، برای پروژه‌هایی با حجم بالای درخواست خواندن، راه‌اندازی Read Replica می‌تواند بار پایگاه داده اصلی را به‌طور قابل‌توجهی کاهش دهد. راهنمای کامل این موضوع در مقاله پیکربندی Replication در MySQL و MariaDB آمده است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS