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.