1

簡単なSQLクエリがあります。

SELECT  
       columnA, columnB, columnC...  
 FROM  
       (SELECT    
             columnA, columnB, columnC...  
        FROM   
              SomeTable) Table1  
  WHERE NOT EXISTS  
        (SELECT   
               columnA  
          FROM  
               SomeOtherTable st  
          WHERE  
               st.columnB = Table1.columnB)

パフォーマンスを向上させるためにこのクエリを書き直す方法を誰かに提案してもらえますか?WHERE NOT EXISTS表1に条項を含めることを意味します。

4

2 に答える 2

5

あなたはこれを使うことができます:

select Table1.*
from (select * from SomeTable) Table1
left outer join SomeOtherTable sot
    on Table1.columnB = sot.columnB
where sot.columnB is null;

columnBパフォーマンスのために、両方のテーブルにインデックスを付けることが重要です。

于 2012-09-21T07:54:17.160 に答える
0

これはどう:

SELECT columnA, columnB, columnC... 
FROM SomeTable
WHERE (SELECT COUNT(*) FROM  SomeOtherTable st  WHERE  st.columnB = SomeTable.columnB)=0;
于 2012-09-21T07:55:15.893 に答える