راکت

افزایش سرعت کوئری در لاراول

3 پاسخ

دوستان سلام
من جدولی دارم که لیستی از جاب ها رو در خودش ذخیره میکنه و همچنین رابطه ی یک به چند با جدولی دیگر داره که هر ردیف ممکنه چند ردیف دیگر در جدول دیگه متناظر داشته باشه. هدفم این هست که کوئری بنویسم که تعداد جابی که بصورت دستی ران شده و همچنین تعداد جابی که بصورت اتوماتیک ذخیره شده را از زیر مجموعه هر جاب در جدول دیگر پیدا کنه و به ما نمایش بده. کد ها هم بصورت زیر هست

$tasks = TaskModel::has('taskExecutions')->with('taskExecutions')->get();

تعریف متد در مدل مربوطه

$numberOfManualTaskExecutions = $this->taskExecutions()->where('trigger_type', 'manual')->count();
$numberOfScheduledTaskExecutions = $this->taskExecutions()->where('trigger_type', 'scheduled')->count();

return "${numberOfManualTaskExecutions}/${numberOfScheduledTaskExecutions}";

مسئله اینجاست که این کوئری خیلی طول میکشه . چطور میشه این زمان را کاهش داد؟

ثبت پرسش جدید

پاسخ‌ها

3
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

سلام. من متوجه نشدم که چیکار کردین، به هر حال می‌تونین کوئری SQL رو چک کنین، از EXPLAIN استفاده کنین، اگه با index مشکل حل میشه، ازش استفاده کنین، اگه طراحی دیتابیستون مشکل داره درستش کنین، و بعد از همه‌ی اینها از کش استفاده کنین.

نیما  ش
نیما ش
@nimageneral

تخصص: برنامه نویس وب

@muhammad محمد جان میشه کمی توضیح بدی در مورد EXPLAIN
ممنون میشم

شاید پاسخ شما همین‌جا باشد

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

خدمتتون عارض شوم که EXPLAIN یه دستور توی SQLئه که بهتون میگه که کوئریتون چه‌طور اجرا شده و ممکنه مشکلات ایندکس‌گذاری رو اینطوری کشف کنید.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام