Einfacher, kürzer, schneller: EXISTS
.
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
Der Abfrageplaner kann bei der ersten gefundenen Zeile anhalten - im Gegensatz zu count()
, wodurch alle (übereinstimmenden) Zeilen unabhängig gescannt werden. Macht einen Unterschied bei großen Tischen. Bei einer Bedingung für eine eindeutige Spalte ist der Unterschied gering:Nur eine Zeile ist qualifiziert und es gibt einen Index, um sie schnell nachzuschlagen.
Sie können einfach ein leeres SELECT
verwenden Liste:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
Die SELECT
list hat keinen Einfluss auf das Ergebnis von EXISTS
. Nur das Vorhandensein mindestens einer qualifizierenden Zeile ist von Bedeutung.