5

SQL Server 2008 R2 を使用しています

テーブルに何かが存在するかどうかをテストしたいだけです

IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'

結果/副作用/パフォーマンスに違いはありますか (どんなに小さくても)?

ありがとうございました

4

2 に答える 2

6

まったく違いはありません。ステートメントの句にIF EXISTS(...)基づいて行の存在のみがチェックされます。WHERE

SELECT *ステートメントの他のすべては無関係です -またはSELECT 1または またはを使用するかどうかに違いはありませんSELECT TOP 1 *。を使用しても、テーブルからすべての列を選択するわけでSELECT * ....はありませWHERE。これも、句に基づいてデータの存在をチェックするだけです。

5 つのクエリはすべて、まったく同じ実行計画を持っています。

于 2012-10-10T05:16:16.323 に答える
3

違いはありません。実行計画は同じようです。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

于 2012-10-10T05:22:12.227 に答える