EXISTS
(ou NOT EXISTS
) é especialmente projetado para verificar se algo existe e, portanto, deve ser (e é) a melhor opção. Ele irá parar na primeira linha que corresponde, então não requer um TOP
cláusula e na verdade não seleciona nenhum dado, portanto, não há sobrecarga no tamanho das colunas. Você pode usar com segurança SELECT *
aqui - não diferente de SELECT 1
, SELECT NULL
ou SELECT AnyColumn
... (você pode até usar uma expressão inválida como SELECT 1/0
e não vai quebrar).
IF EXISTS (SELECT * FROM Products WHERE id = ?)
BEGIN
--do what you need if exists
END
ELSE
BEGIN
--do what needs to be done if not
END