sql >> Base de Datos >  >> RDS >> PostgreSQL

PL/pgSQL comprobando si existe una fila

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.