Оптимизация запросов: Как убрать тормоза в SQL?

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
9,259
Реакции
1,542
Credits
32,263
Сейчас покажу вам, как ускорить медленный SQL-запрос, который выполняется слишком долго. Если у вас в проекте есть запросы, которые выполняются секундами, а не миллисекундами, пора что-то менять!

Разбор примера
Допустим, у нас есть такой запрос:
SQL:
SELECT *
FROM orders
WHERE customer_id = 123
ORDER BY order_date DESC;
Кажется простым, но выполняется медленно. В чём может быть проблема?

Основные причины тормозов:
1️⃣ Нет нужного индекса – если customer_id или order_date не индексированы, база будет делать полный скан таблицы.
2️⃣ Слишком много данных – если таблица огромная, ORDER BY без индекса будет работать медленно.
3️⃣ Использование SELECT * – загружает ненужные колонки и увеличивает нагрузку.

Как ускорить?
✔️ Добавляем индекс (если его нет):
SQL:
CREATE INDEX idx_orders_customer ON orders(customer_id, order_date DESC);
✔️ Выбираем только нужные колонки:
SQL:
SELECT order_id, order_date
FROM orders
WHERE customer_id = 123
ORDER BY order_date DESC;
✔️ Лимитируем выборку (если нужен только последний заказ):
SQL:
SELECT order_id, order_date
FROM orders
WHERE customer_id = 123
ORDER BY order_date DESC
LIMIT 1;

Итог
Добавление индекса + правильный выбор колонок + LIMIT = в разы быстрее!

А какие приёмы оптимизации запросов используете вы? Делитесь в комментариях!