راکت

بهینه سازی کوئری

2 پاسخ

سلام دوستان
یک کوئری روی یک دیتابیس سنگین داریم بدین شکل :

select `id`, `title`, `slug`, `img` from `product_view` where `status` = ? and exists (select * from `filter` inner join `product_has_filters` on `filter`.`id` = `product_has_filters`.`filter_id` where `product_view`.`id` = `product_has_filters`.`product_id` and `filter`.`deleted_at` is null) and exists (select * from `product_types` where `product_view`.`id` = `product_types`.`product_id` and `status` = ? and `product_types`.`deleted_at` is null) order by `id` desc

و این کوئری 8 ثانیه طول میکشه.
بجز کش کردن خروجی برای استفاده های بعدی
مورد خاصی هست مد نظرتون ؟ 8 ثانیه زیاده واقعا

ثبت پرسش جدید

پاسخ‌ها

2
مصطفی خراشادی زاده
مصطفی خراشادی زاده
@safakh

علیک سلام

اگر ساختار جداول مربوط رو هم میفرستادید بهتر بود

فعلا تنها چیزی که به ذهنم میرسه که کمک کنه index گذاری مناسب هستش

یکی از جاهایی که index گذاری کمک میکنه زمانی هستش که ما داخل کوئری ها مون شرط روش اعمال میکنیم

میلاد خسروی
میلاد خسروی
@milwad

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

سلام خسته نباشید
ببین کلیدی ترین نکته برای کوئری و سرعت بخشیدن یه سری نکات ریز هست
ببین توی کوئری همیشه بیا جا هایی رو اول فیلتر کن که خیلی از ایتم ها نگیره برای مثال میخوای محصولات فعال کاربر رو بگیری به صورت عادی اول میزنی وضعیت فعال و ایدی کاربر با باهاش یکی باشه درسته؟ خب تو میتونی بیای اول ایدی رو فیلتر کنی که کلی ایتم حذف بزن به اصطلاح و بعد برای وضعیت

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

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

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