PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PL/pgSQL verificando se existe uma linha


Mais simples, mais curto, mais rápido: EXISTS .
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
  -- do something
END IF;

O planejador de consulta pode parar na primeira linha encontrada - ao contrário de count() , que verificará todas as linhas (correspondentes) independentemente. Faz a diferença com mesas grandes. A diferença é pequena para uma condição em uma coluna exclusiva:apenas uma linha se qualifica e há um índice para pesquisá-la rapidamente.



Você pode simplesmente usar um SELECT vazio Lista:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...

O SELECT list não tem influência no resultado de EXISTS . Apenas a existência de pelo menos uma linha de qualificação é importante.