Más simple, más corto, más rápido: EXISTS .
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
El planificador de consultas puede detenerse en la primera fila encontrada, a diferencia de count() , que escaneará todas las filas (coincidentes) independientemente. Marca la diferencia con mesas grandes. La diferencia es pequeña para una condición en una columna única:solo una fila califica y hay un índice para buscarla rápidamente.
Puedes usar un SELECT vacío lista:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
El SELECT list no tiene influencia en el resultado de EXISTS . Solo importa la existencia de al menos una fila calificada.