EXISTS
(eller NOT EXISTS
) är speciellt utformad för att kontrollera om något existerar och bör därför vara (och är) det bästa alternativet. Den kommer att stanna på den första raden som matchar så den kräver ingen TOP
och den väljer faktiskt ingen data så det finns ingen overhead i storleken på kolumner. Du kan säkert använda SELECT *
här - inte annorlunda än SELECT 1
, SELECT NULL
eller SELECT AnyColumn
... (du kan till och med använda ett ogiltigt uttryck som SELECT 1/0
och det går inte sönder).
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