兩個表:
a)用列svn3
name revno compname
b)中archdetails
與列name version compname inFlat
爲什麼這兩個sql查詢的輸出不同?
不應該這2個查詢輸出相同的結果。查詢2的輸出是正確的。 query1有什麼問題?
QUERY1:
select sum(CASE WHEN inFlat=1 THEN 1 ELSE 0 END) from archdetails inner join svn3 on archdetails.compname=svn3.compname where archdetails.name='ant' AND version='1.4' AND (revno='r274642' OR revno='r274578' OR revno='r274533')
QUERY2:
select sum(CASE WHEN inFlat=1 THEN 1 ELSE 0 END) from archdetails where name='ant' AND version='1.4' AND compname IN (select compname from svn3 where revno ='r274642' OR revno='r274578' OR revno='r274533')
是的,你是對的。我如何修改查詢1呢?即使在索引之後,使用查詢2的速度太慢 – Gaurav 2010-11-16 18:20:23
您是否嘗試使用query2,但是使用'exists'語句而不是'in'條件?在性能方面通常要好得多。 – 2010-11-16 18:58:43
謝謝,會嘗試使用EXISTS。 – Gaurav 2010-11-16 21:21:40