"Оптимизация запросов и использование Query Builder в Laravel"

Андрей Игнатов
Игнатов Андрей
Founder & Techlead
10 мая 2026
28

Производительность базы данных — критически важная часть любого Laravel-приложения.

Даже мощный Eloquent ORM может создавать медленные запросы, если использовать его неправильно.

В этой статье разберём:

  • Laravel Query Builder;
  • join-запросы;
  • eager loading;
  • индексы;
  • оптимизацию SQL;
  • ускорение Laravel database.

Что такое Query Builder

Laravel Query Builder — низкоуровневый инструмент построения SQL-запросов.

Он быстрее Eloquent и подходит для сложных запросов.


Пример Query Builder

use Illuminate\Support\Facades\DB;

$posts = DB::table('posts')->get();

where()

DB::table('posts')
    ->where('published', true)
    ->get();

select()

DB::table('posts')
    ->select('id', 'title')
    ->get();

Laravel Join

Join используется для объединения таблиц.

Inner Join

DB::table('posts')
    ->join('users', 'posts.user_id', '=', 'users.id')
    ->select('posts.*', 'users.name')
    ->get();

Left Join

->leftJoin()

Group By

DB::table('posts')
    ->groupBy('category_id')
    ->get();

Order By

->orderBy('created_at', 'desc')

Pagination

->paginate(15)

Eager Loading

Одна из главных оптимизаций Laravel.

Post::with('comments')->get();

N+1 Problem

Плохой пример:

foreach ($posts as $post) {
    echo $post->comments;
}

Laravel выполнит десятки запросов.


Индексы в MySQL и PostgreSQL

Очень важны для производительности.

Migration:

$table->index('email');

Composite Index

$table->index(['user_id', 'published']);

Chunking данных

Для больших таблиц:

Post::chunk(100, function ($posts) {

});

Cursor Pagination

->cursorPaginate(15)

Query Logging

Laravel позволяет анализировать SQL.

DB::enableQueryLog();

Cache запросов

Cache::remember('posts', 60, function () {

});

Raw SQL

При необходимости:

DB::select('SELECT * FROM posts');

Когда использовать Query Builder

Query Builder подходит для:

  • сложных SQL;
  • аналитики;
  • heavy joins;
  • отчётов;
  • высоконагруженных API.

Лучшие практики оптимизации

Рекомендуется:

  • избегать select *;
  • использовать eager loading;
  • индексировать foreign keys;
  • кешировать тяжёлые запросы;
  • минимизировать joins.

Laravel Database Performance

Производительность Laravel сильно зависит от:

  • структуры БД;
  • индексов;
  • количества запросов;
  • качества SQL.

Итоги

Laravel Query Builder и Eloquent позволяют строить мощные database-приложения.

Для высокой производительности важно:

  • оптимизировать запросы;
  • использовать join правильно;
  • избегать N+1;
  • применять eager loading и indexes.

Это особенно важно для крупных Laravel API и SaaS-проектов.

👉 Заказать бесплатный экспресс-аудит проекта

Задать вопрос

Если у вас возник технический вопрос по нашим статьям или появилась потребность в профессиональной разработке сложного веб-проекта — оставьте свои контакты. Техлид «Команды-А» свяжется с вами, чтобы проконсультировать и помочь найти оптимальное решение.

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.