sql >> Databáze >  >> RDS >> PostgreSQL

PL/pgSQL kontroluje, zda řádek existuje

Jednodušší, kratší, rychlejší: EXISTS .

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

Plánovač dotazů se může zastavit na prvním nalezeném řádku – na rozdíl od count() , který bez ohledu na to prohledá všechny (odpovídající) řádky. U velkých stolů je to rozdíl. Rozdíl je malý pro podmínku v jedinečném sloupci:kvalifikuje se pouze jeden řádek a existuje index, který jej rychle vyhledá.

Stačí použít prázdný SELECT seznam:

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

SELECT seznam nemá žádný vliv na výsledek EXISTS . Důležitá je pouze existence alespoň jednoho kvalifikačního řádku.



  1. Jak volat uloženou proceduru MySQL v Pythonu

  2. Vypočítejte počet sekund od určitého data/času v SQLite

  3. Chyba Android SQLite:číslo proměnné musí být mezi ?1 a ?999

  4. Efektivní zpracování hodnot NULL pomocí funkce SQL COALESCE pro začátečníky