PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PL/pgSQL che controlla se esiste una riga

Più semplice, più breve, più veloce: EXISTS .

IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
  -- do something
END IF;

Il pianificatore di query può fermarsi alla prima riga trovata, al contrario di count() , che analizzerà tutte le righe (corrispondenti) a prescindere. Fa la differenza con i tavoli grandi. La differenza è piccola per una condizione su una colonna univoca:solo una riga si qualifica e c'è un indice per cercarla rapidamente.

Puoi semplicemente usare un SELECT vuoto elenco:

IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...

Il SELECT list non ha alcuna influenza sul risultato di EXISTS . Conta solo l'esistenza di almeno una riga qualificante.