sql >> データベース >  >> RDS >> PostgreSQL

行が存在するかどうかをチェックするPL/pgSQL

    よりシンプル、より短く、より速く: 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つの適格な行の存在のみです。



    1. 数値の列値のみを取得するにはどうすればよいですか?

    2. SQL Server(T-SQL)で電子メールの送信に失敗した理由を調べる

    3. MySQL DROP UNIQUE CONSTRAINT

    4. postgres dbファイル-特定のテーブル/インデックスを表すファイルはどれですか?