Eenvoudiger, korter, sneller: EXISTS .
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
De queryplanner kan stoppen bij de eerste gevonden rij - in tegenstelling tot count() , die hoe dan ook alle (overeenkomende) rijen zal scannen. Maakt een verschil met grote tafels. Het verschil is klein voor een voorwaarde op een unieke kolom:slechts één rij komt in aanmerking en er is een index om het snel op te zoeken.
Je kunt gewoon een lege SELECT . gebruiken lijst:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
De SELECT lijst heeft geen invloed op het resultaat van EXISTS . Alleen het bestaan van ten minste één kwalificerende rij is van belang.