当前位置: 代码迷 >> DB2 >> DB2 SQL优化解决思路
  详细解决方案

DB2 SQL优化解决思路

热度:7551   发布时间:2013-02-26 00:00:00.0
DB2 SQL优化
请大家看看下班的这个sql有什么可优化的地方,最好加下原理,非常感谢
SELECT                
      count(a.EVT_ID) as NUM  
FROM  PACCESSVIEW.Ivc_List  a 
inner join PACCESSVIEW.indiv_crd_act_rln b
            on  a.ivc_act=b.csr_act_crd_num 
            and b.crd_num=#trnNum#  
WHERE   a.TXN_DTE >= #qrySttDte# 
           AND a.TXN_DTE<= #qryEndDte# 
  AND a.CSR_ID =#csrId# 
  AND b.CRD_BOK_IND ='0'
--AND b.CRD_BOK_IND ='1'        
 AND a.PRT_REP_FLG=#prtFlg#          
 AND a.TXN_AMT=#txnAmt#  
以下是现有的索引:
CREATE INDEX "CBMART"."IVC_LIST1"
ON "CBMART"."IVC_LIST"
("IVC_ACT" ASC,
  "CSR_ID" ASC,
  "TXN_DTE" ASC)
IN "IDX_IVC"
PCTFREE 10
ALLOW REVERSE SCANS;

CREATE INDEX "CBMART"."IVC_LIST2"
ON "CBMART"."IVC_LIST"
("LST_AMD_DTE" ASC)
IN "IDX_IVC"
PCTFREE 10
ALLOW REVERSE SCANS;

CREATE INDEX "PDATA"."INDIV_CRD_ACT_RL1"
ON "PDATA"."INDIV_CRD_ACT_RLN"
("CRD_NUM" ASC,
  "CSR_ACT_CRD_NUM" ASC,
  "INDIV_CSR_ID" ASC)
PCTFREE 10
ALLOW REVERSE SCANS;
 
------解决方案--------------------------------------------------------
看执行计划吧 sql优化需要知道的原理太多了。。。
------解决方案--------------------------------------------------------
楼主建的复合索引应该没什么可优化的

如果单从结构上的说可以表改成按TXN_DTE,CRD_BOK_IND这种重复值较多的列分区

如果是dpf环境可以把ivc_act,csr_act_crd_num这种值比较分散的关联字段设为数据库分区键
  相关解决方案