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.