Sobes.tech
Назад к вопросам
Senior
9

Есть ли опыт оптимизации SQL-запросов? Приведите пример.

Компании, где спрашивали
ИП Ганус Александр Андреевич

Ответ от нейросети

sobes.tech AI

Да, есть опыт оптимизации SQL-запросов. Например, однажды был запрос, который долго выполнялся из-за отсутствия индексов и неэффективных JOIN.

Исходный запрос:

SELECT orders.id, customers.name, orders.total
FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE orders.status = 'completed'
AND customers.region = 'Europe';

Оптимизации:

  1. Добавил составной индекс на таблицу orders по полям (status, customer_id).
  2. Добавил индекс на поле region в таблице customers.
  3. Переписал запрос, чтобы сначала фильтровать по orders.status, а затем делать JOIN, используя подзапрос:
SELECT o.id, c.name, o.total
FROM (
  SELECT id, customer_id, total
  FROM orders
  WHERE status = 'completed'
) o
JOIN customers c ON o.customer_id = c.id
WHERE c.region = 'Europe';

Результат: время выполнения сократилось с нескольких секунд до долей секунды за счет уменьшения объема данных на этапе JOIN и использования индексов.