1. ホーム
  2. sql

[解決済み] レコードが存在するかどうかを判断する最速の方法

2022-04-21 09:52:07

質問

タイトルの通りなのですが 私は、レコードがテーブルに存在するかどうかを決定するために、最小限のオーバーヘッドで最速の方法を見つけようとしています。

サンプルクエリです。

SELECT COUNT(*) FROM products WHERE products.id = ?;

    vs

SELECT COUNT(products.id) FROM products WHERE products.id = ?;

    vs

SELECT products.id FROM products WHERE products.id = ?;

を言う。 ? と入れ替わっています。 'TB100' ...最初のクエリと2番目のクエリはまったく同じ結果を返します。 1 この会話の場合)。最後のクエリは 'TB100' は期待通り、あるいは id がテーブル内に存在しない場合。

を把握することです。 id がテーブル内にあるかどうか。もしなければ、プログラムは次にレコードを挿入し、もしあれば、プログラムはそれをスキップするか、この質問の範囲外の他のプログラムロジックに基づいたUPDATEクエリを実行します。

どちらが高速でオーバーヘッドが少ないか(これは1回のプログラム実行で数万回繰り返され、1日に何度も実行されることになる)。

(このクエリは、Java から M$ 提供の JDBC ドライバを使用して M$ SQL Server に対して実行されます)

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

SELECT TOP 1 products.id FROM products WHERE products.id = ?; は、最初のレコードを見つけた後に実行を終了するため、すべての提案に勝ります。