1. ホーム
  2. sql

[解決済み】SQL: レコードが存在するかどうかを適切にチェックする方法

2022-04-01 05:47:20

質問

SQL Tuning関連のドキュメントを読んでいたら、こんなものがありました。

SELECT COUNT(*) :

  • 行数をカウントします。
  • レコードの存在を確認するために不適切に使用されることが多い。

SELECT COUNT(*) そんなに悪いか?

レコードの存在を確認する適切な方法とは?

どのように解決するのですか?

以下のどちらかを使用するのがよいでしょう。

-- Method 1.
SELECT 1
FROM table_name
WHERE unique_key = value;

-- Method 2.
SELECT COUNT(1)
FROM table_name
WHERE unique_key = value;

最初の選択肢は結果なし、または結果1つ、2番目のカウントは0または1であるべきです。

あなたが使っているドキュメントは何年前のものですか?いいアドバイスを読んだと思いますが、最近の RDBMS のクエリオプティマイザのほとんどは SELECT COUNT(*) 理論的には(古いデータベースでは)違いがありますが、実際には違いを感じないはずです。