Я заменил
whereNotIn() на leftJoin()— и запрос стал выполняться на 30 секунд быстрее.
Таблица, по которой выполнялся поиск, содержала более 800 тысяч записей.
Вот 10 быстрых способов оптимизировать запросы в Laravel:
🔹Используйте
leftJoin() вместо whereNotIn()— быстрее и эффективнее.
🔹Замените
whereIn() на whereExists()— экономит память.
🔹Выбирайте только нужные столбцы через
select()— избегайте
User::all().🔹Обрабатывайте большие объемы данных по частям через
chunk()— не загружайте всё сразу.
🔹Используйте
pluck() вместо get()— быстрее при выборке одного столбца.
🔹Проверяйте наличие записей через
exists() вместо count() > 0.🔹Используйте
upsert() вместо updateOrInsert()— меньше запросов.
🔹Пагинируйте результаты через
paginate()— не загружайте все данные сразу.
🔹Кэшируйте часто используемые запросы через
cache()— снижает нагрузку на базу данных.
🔹Избегайте жадной загрузки в циклах, используйте
load()— эффективная загрузка связей.
Каждая миллисекунда имеет значение.
Небольшие изменения = значительный прирост производительности ✌️
👉 @PHPgx
