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.