sql >> Database >  >> RDS >> PostgreSQL

PL/pgSQL controleren of een rij bestaat

Eenvoudiger, korter, sneller: EXISTS .

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

De queryplanner kan stoppen bij de eerste gevonden rij - in tegenstelling tot count() , die hoe dan ook alle (overeenkomende) rijen zal scannen. Maakt een verschil met grote tafels. Het verschil is klein voor een voorwaarde op een unieke kolom:slechts één rij komt in aanmerking en er is een index om het snel op te zoeken.

Je kunt gewoon een lege SELECT . gebruiken lijst:

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

De SELECT lijst heeft geen invloed op het resultaat van EXISTS . Alleen het bestaan ​​van ten minste één kwalificerende rij is van belang.



  1. Hoe loop ik door een MySQL-query via PDO in PHP?

  2. Hoe kan ik verbinding maken met SQL Server met behulp van geïntegreerde beveiliging met het JDBC-stuurprogramma?

  3. Aankondiging van ClusterControl 1.4.1 - de ProxySQL-editie

  4. Geoptimaliseerde SQL voor boomstructuren