2017-02-20 104 views
0

該查詢完成這項工作,但我相信它可以得到改進。任何提示,將不勝感激:)如何優化此SQL查詢

SELECT RIH.ItemName, RI.FieldAnswer, RIH.IsConditional 
FROM ReportItemHeader AS RIH 
    INNER JOIN ReportItem AS RI 
    ON RIH.ItemID = RI.ItemID 
     AND RIH.ReportID = RI.ReportID 
WHERE RIH.ReportID = 2080258 
    AND RIH.SectionNumber = 3 

EXCEPT 

SELECT RIH.ItemName, RI.FieldAnswer, RIH.IsConditional 
FROM ReportItemHeader AS RIH 
    INNER JOIN ReportItem AS RI 
    ON RIH.ItemID = RI.ItemID 
     AND RIH.ReportID = RI.ReportID 
WHERE RIH.ReportID = 2080258 
    AND RIH.SectionNumber = 3 
    AND RIH.IsConditional = 1 
    AND RI.FieldAnswer = '' 

回答

4

您可以刪除第二SELECT如果你適應第一WHERE條款如下:

SELECT  RIH.ItemName, RI.FieldAnswer, RIH.IsConditional 
FROM  ReportItemHeader AS RIH 
INNER JOIN ReportItem AS RI 
     ON RIH.ItemID = RI.ItemID AND RIH.ReportID = RI.ReportID 
WHERE  RIH.ReportID = 2080258 AND RIH.SectionNumber = 3 
     AND NOT(RIH.IsConditional = 1 AND RI.FieldAnswer = '') 
+0

非常感謝!!!!! <3 –