SQL:存在判定にCOUNTを使うなEXISTSを使え
レコードの存在判定で COUNT で件数を取る方法があるが、COUNT は範囲の全件数を取るまで検索が止まることがない。
例外的にユニークキーインデックスだけで確実に1レコードしかヒットしないことが保証できる場合は許容される。
存在するかどうかを確認するには EXISTS を使うべき。EXISTS ならば、1つ見つかった時点で検索が止まる。
EXISTS ならば bool 値として取り出せるので、単純な値としてそのまま使うことができる。
COUNT だと <> 0 をいちいち書く必要がある。
PostgreSQL など
code:sql
SELECT EXISTS(SELECT 1 FROM mytable WHERE myfield = 100)
EXISTS に必要なのは「レコードが取れるかどうか」なので、取得列に意味がない。なので、1を指定しておく。