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.