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