PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PL/pgSQL vérifie si une ligne existe

Plus simple, plus court, plus rapide : EXISTS .

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

Le planificateur de requêtes peut s'arrêter à la première ligne trouvée - contrairement à count() , qui analysera toutes les lignes (correspondantes) indépendamment. Fait la différence avec les grandes tables. La différence est minime pour une condition sur une colonne unique :une seule ligne est qualifiée et il existe un index pour la rechercher rapidement.

Vous pouvez simplement utiliser un SELECT vide liste :

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

Le SELECT la liste n'a aucune influence sur le résultat de EXISTS . Seule l'existence d'au moins une ligne qualifiante compte.