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