Em diversas situações nos vemos obrigados a usar uma função que verificar se um determinado registro existe antes de decidir o que será feito. Um exemplo típido e quando queremos determinar se vamos atualizar ou criar um registro. É ai que entra a função EXISTS.
Exemplo:
if EXISTS (select *
ELSE
from authors
where au_id = '172-32-1176')
Print 'O registro já existe - Executaremos um Update'
Print 'O registro não existe - Vamos executar um Insert'
A função recebe um único parâmetro, que é uma instrução SQL. Se para a instrução SQL passada registros existirem, a função irá retornar TRUE, do contário, retornará FALSE.
A vantagem do uso do EXISTS é que assim que ele encontra o primeiro registro, o processo é interrompido, salvando então recursos do servidor SQL, embora se a pesquisa estiver sendo feita em cima de uma PRIMARY KEY, a diferença não seja muito grande entre um e outro. Entretanto, haverá um enorme ganho de performance se você estiver fazendo busca por qualquer outro campo não indexado.
Observer esses dois exemplos:
if exists (select *
from authors
where state = 'ca')
Print 'Registro Existe'
ELSE
Print 'Registro não existe'
if (select count(*)
from authors
where state = '172-32-1176') > 0
Print 'Registro existe'
ELSE
Print 'Registro não existe'
Examinando os bancos default do MS-SQL SERVER, na database "pubs", tabela "authors" existem somente 23 registros. Mesmo com tão poucos registros, a query com o IF EXISTS é executada 4 vezes mais rápido do que um "select count". Isso porque a query pára a sua execução assim que o primeiro registro é encontrado. Já no segundo exemplo, todos os registros que atenderem a condição serão processados (retornados).
É isso ai :)