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.