Если тебе нужно просто понять, есть ли конкретная запись в данных, не используй
COUNT() с фильтром (WHERE).SELECT COUNT(*)
FROM users
WHERE email = 'johnfake@analytica.com';
Проблема в том, что
COUNT(*) отвечает на другой вопрос. Он считает, сколько строк подходит под условие, хотя тебе нужно только понять, существует ли хотя бы одна.Когда ты пишешь
COUNT(*), база может пройтись по всем подходящим строкам, чтобы вычислить итоговое число. Даже если совпадение нашлось сразу, она может продолжить, потому что ты попросил полный подсчет. На больших таблицах это лишняя работа.Вместо
COUNT() используй EXISTS:SELECT EXISTS (
SELECT 1
FROM users
WHERE email = 'johnfake@analytica.com'
);
С
EXISTS база остановится, как только найдет первое совпадение. Никакого подсчета, никакого лишнего сканирования.👉 @SQLPortal
