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

How about this:

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