2

次の Table_A と Table_B を検討してください。

Table_A
ID  |A_Field_1
1   |10
2   |11
3   |12

テーブル_B:

ID  |B_Field_1
1   |500
1   |510
1   |520
2   |550
3   |530

520 または 530 の値を持たない値IDを取得するクエリを作成する必要があります。A_Field_1Table_BB_Field_1

出力:

ID  |A_FIELD_1
2   |11

私の現在のクエリは次のとおりです。

SELECT ID,A_Field_1 
from Table_A
where ID not in (select ID from Table_B where B_Field_1 in (520,530))

これは機能しますが、誰かがより優れたパフォーマンスベースのクエリを提供できます。上記のクエリのように、select ID from Table_B where B_Field_1 in (520,530)内側のクエリは大きく、成長するテーブルに対応しています。

4

2 に答える 2

2

これを試してみてください -

SELECT
      Id
    , A_Field_1
FROM Table_A a
WHERE EXISTS(
          SELECT 1
          FROM Table_B b
          WHERE B_Field_1 NOT IN (520, 530)
               AND b.Id = a.Id
     )


SELECT
      Id
    , A_Field_1
FROM Table_A a
WHERE NOT EXISTS(
          SELECT 1
          FROM Table_B b
          WHERE B_Field_1 IN (520, 530)
               AND b.Id = a.Id
     )
于 2013-07-01T05:41:14.140 に答える