PL/pgSQL : Vérifier efficacement si une ligne existe
En PL/pgSQL, vérifier l'existence d'une ligne dans une table est une tâche courante. Vous essayez d'utiliser une requête SELECT pour récupérer un entier dans une valeur booléenne, mais cette méthode est inefficace et sujette aux erreurs. Voici une solution plus efficace et concise :
Le moyen le plus simple est d'utiliser l'opérateur EXISTS. EXISTS renvoie true si au moins une ligne correspondante existe dans la sous-requête, false sinon. Cela fournit un moyen clair et concis de vérifier l'existence d'une ligne :
<code class="language-sql">IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN -- 执行某些操作 END IF;</code>
Avantages d'EXISTE :
Comparaison avec COUNT :
Votre approche originale utilisant COUNT nécessite d'analyser toutes les lignes éligibles pour déterminer leur nombre. Cela peut être moins efficace, surtout si des index sont présents. En revanche, EXISTS peut se terminer dès que la première ligne correspondante est trouvée.
Remarque : Si vous avez besoin d'un nombre de lignes correspondantes, utilisez COUNT avec une condition qui limite le résultat à une ligne, par exemple :
<code class="language-sql">IF (SELECT COUNT(*) FROM people p WHERE p.person_id = my_person_id) > 0 THEN -- 执行某些操作 END IF;</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!