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.