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.