Продвинутый SQL совет - всегда проверяй, можно ли заменить SELECT DISTINCT на правильный JOIN или EXISTS.
Очень часто DISTINCT добавляют просто чтобы убрать дубли после неудачного join. Запрос вроде работает, но по факту ты сначала раздуваешь результат, а потом заставляешь базу его чистить. На больших таблицах это легко убивает производительность.
Плохой вариант:
SELECT DISTINCT u.id, u.name
FROM users u
JOIN orders o ON o.user_id = u.id;
Лучше так:
SELECT u.id, u.name
FROM users u
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.user_id = u.id
);
Почему это сильный приём:
EXISTS останавливается, как только находит первое совпадение
не нужно тащить лишние строки
не нужно потом убирать дубли
логика запроса становится честной - ты проверяешь наличие, а не собираешь мусор
Это один из самых частых hidden performance fixes в SQL. Если видишь DISTINCT, сразу спрашивай себя: он тут реально нужен или просто маскирует плохую логику JOIN.