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语句,看看执行速度如何
------解决方案--------------------
先看一下执行计划。