نیما - ش
3 سال پیش توسط نیما - ش مطرح شد
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}";

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


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
0

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


نیما - ش
تخصص : برنامه نویس وب
@nimageneral 3 سال پیش مطرح شد
0

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


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
1

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


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

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