EXISTS
(eller NOT EXISTS
) er specielt designet til at tjekke, om noget eksisterer, og bør derfor være (og er) den bedste mulighed. Den stopper på den første række, der matcher, så den kræver ikke en TOP
klausul, og den vælger faktisk ikke nogen data, så der er ingen overhead i størrelsen af kolonner. Du kan trygt bruge SELECT *
her - ikke anderledes end SELECT 1
, SELECT NULL
eller SELECT AnyColumn
... (du kan endda bruge et ugyldigt udtryk som SELECT 1/0
og den går ikke i stykker).
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