[解決済み] レコードが存在するかどうかを判断する最速の方法
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 = ?;
は、最初のレコードを見つけた後に実行を終了するため、すべての提案に勝ります。
関連
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] リストに値が存在するかどうかを確認する最速の方法
-
[解決済み] Entity Frameworkにおける最速の挿入方法
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] MySQLの「スキーマの作成」と「データベースの作成」 - 違いはあるのか?
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] SQL Server における DateTime2 と DateTime の比較
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み】SQL: レコードが存在するかどうかを適切にチェックする方法