تکنولوژی نوین اینترنتی
لاراول به دلیل استفاده از Eloquent ORM نوشتن کوئریها رو بسیار ساده کرده، اما اگه با دقت استفاده نشه ممکنه باعث افزایش تعداد کوئریهای غیرضروری، کندی صفحات و بار زیاد روی دیتابیس بشه. این مقاله به بررسی روشهایی برای بهینهسازی کوئریها در لاراول میپردازه.
این کد به ازای هر پست، یک کوئری جدا برای user اجرا میکنه!
با
with()
همهی userها رو در یک کوئری جداگانه میاره.
select
)به جای گرفتن تمام ستونها (*
):
گرفتن فقط ستونهای موردنیاز باعث کاهش حافظه و سرعت پاسخدهی میشه.
اگر نیاز به کوئری سفارشی داری:
در مدل:
در کنترلر:
اسکوپها باعث DRY بودن کد و بهینهسازی کوئریها میشن.
chunk()
برای پردازش دادههای زیاداگر میلیونها رکورد داری:
بهتر از
get()
روی دیتای زیاد استفاده کن چون مصرف RAM رو کاهش میده.
lazy()
یا cursor()
برای مصرف پایین حافظه
cursor()
یک رکورد در لحظه میگیره (lazy loading).
برای بررسی کوئریها:
مناسب برای دیباگ و کشف گلوگاههای کوئریها.
روی ستونهایی که زیاد جستجو انجام میدی ایندکس بذار:
بررسی با ابزار
EXPLAIN
در MySQL میتونه کمک کنه.
EXISTS
به جای IN
برای زیرکوئریها
✅ از with()
استفاده کن (Eager Load)
✅ فقط ستونهای لازم رو select()
کن
✅ از chunk()
یا cursor()
برای دادههای زیاد استفاده کن
✅ از whereRaw
برای کوئریهای خاص استفاده کن
✅ از ایندکس در دیتابیس استفاده کن
✅ از EXPLAIN
برای تحلیل کوئریها کمک بگیر
✅ از Query Scopeها استفاده کن برای خوانایی بهتر
بهینهسازی کوئریها یکی از مهمترین قدمها برای سریعتر شدن اپلیکیشن لاراولی شماست. با چند تکنیک ساده مثل with()
و chunk()
، میتونی مصرف منابع و زمان پاسخدهی رو بهطور چشمگیری کاهش بدی.