EXISTS (lub NOT EXISTS ) jest specjalnie zaprojektowany do sprawdzania, czy coś istnieje i dlatego powinno być (i jest) najlepszą opcją. Zatrzyma się w pierwszym pasującym wierszu, więc nie wymaga TOP klauzula i tak naprawdę nie wybiera żadnych danych, więc nie ma narzutu w rozmiarze kolumn. Możesz bezpiecznie użyć SELECT * tutaj - nie inaczej niż SELECT 1 , SELECT NULL lub SELECT AnyColumn ... (możesz nawet użyć nieprawidłowego wyrażenia, takiego jak SELECT 1/0 i nie pęknie).
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