SQL Middle EXPLAIN и оптимизация обновлено
Перепиши DISTINCT после JOIN на EXISTS
Условие
Запрос ищет клиентов, которые хоть раз покупали электронику. Он размножает строки соединениями, а потом схлопывает их DISTINCT. Перепиши через EXISTS, чтобы результат был тем же.
Колонки: id, name. Порядок строк не важен.
SELECT DISTINCT c.id, c.name
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN order_items oi ON oi.order_id = o.id
JOIN products p ON p.id = oi.product_id
WHERE p.category = 'Электроника';
Как подойти
Подсказки: 1
- Нужно знать только факт покупки, а не все покупки.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Перепиши подзапрос в SELECT на JOIN с GROUP BY
Следующий вопрос
Перепиши фильтр из HAVING в WHERE