select f.ssfd_bill_code,
                       max(cv.chnname) chnname,
                       max(nvl(ssem_soc_flag, 'N')) ssem_soc_flag,
                       max(nvl(ssem_soc_copy_flag, 'N')) ssem_soc_copy_flag,
                       max(scav.scas_create_time) scaa_create_time
                  from a  em,
                       b   scav,
                       c cv,
                       d      f
                 where f.ssfd_fee_id = scav.scaa_fee_id(+) and
                       f.ssfd_manifest_id = em.ssem_exp_bl_id and
                       nvl(f.ssfd_bl_code, '0') < 'ZZZZZZZZZZZZZZZZZZZZ' and
                        f.ssfd_org_id = '530' and
                        em.ssem_carrier_id = cv.accountnumber 
                group by f.ssfd_bill_code
因为a,b,c,d表都是过百W条记录,所以这样肯定慢,把其中几张表放到select部分会不会对查询结果集不准确,要怎么写。(主要是有个group by,所以我觉得如果把几张子表放到select部分会不准确)

解决方案 »

  1.   

    1.首先看看你用到的表是否建立合理索引,
    2.如果有索引的话,是否SQL语句用到合适的函数索引.
    3.不要对这么多的表互相关连.
      

  2.   

    几张表放到select一起,没有什么关系,这样反而很有可能会优化你的查询,查询速度的关键还是在索引问题上
      

  3.   

    谁能告诉我,把子表放到select部分怎么写,谢谢
      

  4.   

    把子表放到select部分怎么写>select ...
    from aa t1,
        (select ... from bb,cc where bb.id=cc.id ) t2
    where t1.id=t2.id 
        ...