Prościej, krócej, szybciej: EXISTS .
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
Planer zapytań może zatrzymać się na pierwszym znalezionym wierszu — w przeciwieństwie do count() , który niezależnie przeskanuje wszystkie (pasujące) wiersze. Robi różnicę przy dużych stołach. Różnica jest niewielka w przypadku warunku w unikalnej kolumnie:kwalifikuje się tylko jeden wiersz i istnieje indeks do szybkiego wyszukiwania.
Możesz po prostu użyć pustego SELECT lista:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
SELECT lista nie ma wpływu na wynik EXISTS . Liczy się tylko istnienie co najmniej jednego kwalifikującego się wiersza.