Acho que vale a pena ressaltar, embora tenha sido abordado nos comentários, que nesta situação:
SELECT 1 FROM my_table WHERE *indexed_condition* LIMIT 1
É superior a:
SELECT * FROM my_table WHERE *indexed_condition* LIMIT 1
Isso ocorre porque a primeira consulta pode ser satisfeita pelo índice, enquanto a segunda exige uma consulta de linha (a menos que possivelmente todas as colunas da tabela estejam no índice usado).
A adição da LIMIT
cláusula permite que o mecanismo pare após encontrar qualquer linha.
A primeira consulta deve ser comparável a:
SELECT EXISTS(SELECT * FROM my_table WHERE *indexed_condition*)
Que envia os mesmos sinais para o mecanismo (1 / * não faz diferença aqui), mas eu ainda escreveria o 1 para reforçar o hábito ao usar EXISTS
:
SELECT EXISTS(SELECT 1 FROM my_table WHERE *indexed_condition*)
Pode fazer sentido adicionar o EXISTS
agrupamento se você precisar de um retorno explícito quando nenhuma linha corresponder.
...EXISTS( SELECT 1/0 FROM someothertable)
. Para SQL Server e Oracle - não faz diferença usar *, 1 ou NULL porque EXISTS apenas testa um booleano com base em mais de 1 dos critérios WHERE correspondentes.