如何优化此SQL查询

时间:2017-02-20 14:15:09

标签: 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 = ''

1 个答案:

答案 0 :(得分: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 = '')