よりシンプル、より短く、より速く: EXISTS
。
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
クエリプランナーは、count()
ではなく、最初に見つかった行で停止できます。 、関係なくすべての(一致する)行をスキャンします。大きなテーブルで違いを生みます。一意の列の条件の違いはわずかです。1つの行のみが適格であり、それをすばやく検索するためのインデックスがあります。
空のSELECT
を使用できます リスト:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
SELECT
リストはEXISTS
の結果に影響を与えません 。重要なのは、少なくとも1つの適格な行の存在のみです。