Enklare, kortare, snabbare: EXISTS
.
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
Frågeplaneraren kan stanna vid den första raden som hittas - i motsats till count()
, som kommer att skanna alla (matchande) rader oavsett. Gör skillnad med stora bord. Skillnaden är liten för ett villkor i en unik kolumn:bara en rad kvalificerar sig och det finns ett index för att snabbt slå upp det.
Du kan bara använda en tom SELECT
lista:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
SELECT
list har inget inflytande på resultatet av EXISTS
. Endast förekomsten av minst en kvalificerande rad spelar roll.