首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

left join 如何样提高查询效率

2013-10-18 
left join 怎么样提高查询效率SELECT * FROM (SELECTCOALESCE(AA.SBCDNO,#),COALESCE(AA.SBCUNO,#),CO

left join 怎么样提高查询效率
            SELECT * FROM (SELECT
                 COALESCE(AA.SBCDNO,'#'),
                 COALESCE(AA.SBCUNO,'#'),
                 COALESCE(AA.SBSVAC,'#'),
                 COALESCE(SC.ECSKST,-9999),
                 COALESCE(SC.OLD_ECSKST,'#'),
                 COALESCE(SC.ECPS08,'#'), 
                 COALESCE(CA.TZCLDT1,'1900-01-01'),
                 COALESCE(CA.TZCLDT2,'1900-01-01'),
                 COALESCE(CA.TZCLDTM,'1900-01-01')
              FROM
                 T0DM.T0_SBSAA AA
                 LEFT JOIN  T0DM.T0_SCECA_CARD SC
                 ON AA.SBIQNO = SC.ECIQNO AND AA.SBSTCD = 'A'
                 LEFT JOIN  T1DM.T1_CARD_T001 CA
                 ON  AA.SBIQNO = CA.TZIQNO)
          UNION
           SELECT * FROM (SELECT
                 COALESCE(AB.SBCDNO,'#'),
                 COALESCE(SV.SECUNO,'#'),
                 COALESCE(AB.SBSVAC,'#'),
                 COALESCE(SC.ECSKST,-9999),
                 COALESCE(SC.OLD_ECSKST,'#'),
                 COALESCE(SC.ECPS08,'#'),
                 COALESCE(CA.TZCLDT1,'1900-01-01'),
                 COALESCE(CA.TZCLDT2,'1900-01-01'),
                 COALESCE(CA.TZCLDTM,'1900-01-01')
              FROM
                 T0DM.T0_SBSAB AB
                 LEFT JOIN  T0DM.T0_SCECA_CARD SC
                 ON AB.SBSVAC = SC.ECSVAC AND AB.SBSTCD = 'A'
                 LEFT JOIN  T1DM.T1_CARD_T001 CA
                 ON SC.ECIQNO = CA.TZIQNO
                 LEFT JOIN  T0DM.T0_SVSEA SV
                 ON SV.SESVAC=AB.SBSVAC)


比如像这个查询语句,关联了多张表,还需要用到UNION来去除重复的数据,之前测试的时候数据量少的时候都需要十几分钟,数据量上百万的时候跑2~3个小时都没结果,请各位大侠看看,能不能优化之类的。
我想是不是需要建一个索引?请指教。。。
[解决办法]
1、关联字段建立索引,查询条件建立索引
2、为什么有那么多COALESCE,不能事先update吗
[解决办法]
在连接字段上建立索引没有
[解决办法]
拆分成两个SQL语句,看看执行速度如何
[解决办法]
先看一下执行计划。

热点排行