с пользователями, имеющая среди прочих колонки id и email. По колонке email построен уникальный индекс.
Задача довольно тривиальная: определить, есть ли в таблице пользователь с заданным email.
Мне интересует не столько решение, сколько механизм работу СУБД, а именно:
1) Есть ли какой-то самый простейший и самый дешевый способ определить наличие хотябы одной записи, удовлетворяющей условиям?
2) Если это возможно только через COUNT, то в данном случае есть ли разница, по какому полю строить COUNT? Например COUNT(id) или COUNT(email) или COUNT(*).
Хочу разобраться, как это работает.
Юзай EXISTS.
С учётом: > По колонке email построен уникальный индекс. EXISTS, COUNT(email) и COUNT(*) дадут практически одинаковые планы (index-only scan). А вот "COUNT(id)" полезет в heap, чтобы проверить id (index scan).
Обсуждают сегодня