当前位置: 代码迷 >> DB2 >> DB2 SQL优化,该怎么处理
  详细解决方案

DB2 SQL优化,该怎么处理

热度:1115   发布时间: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这种值比较分散的关联字段设为数据库分区键
  相关解决方案