简体   繁体   English

IBM Db2 Sql查询优化

[英]IBM Db2 Sql query optimization

I have this query: 我有这个查询:

select DBSAITE.MITEM, DBSAITE.MPDSC, DBSAITE.MUTMS, MVSACPE.COSTUN,  PCSACST.CSTTYAPP, 
SUM(PCSACST.CSTBURD1 + PCSACST.CSTBURD2 + PCSACST.CSTLABOR + 
PCSACST.CSTMAT + PCSACST.CSTSETUP + PCSACST.CSTEXTRN) as COSTO_STD 
from MVSACPE, PCSACST, DBSAITE
WHERE PCSACST.CSTCOSC = MVSACPE.CODSOC
AND PCSACST.CSTITEM = MVSACPE.CODITM
AND MVSACPE.CODITM = DBSAITE.MITEM
AND DBSAITE.MCOSC = 'GRS'
AND MVSACPE.CODSOC = 'GRS23'
AND MVSACPE.DTPERI = '201512'
AND MVSACPE.CODMAG = 'ALL'
AND MVSACPE.CODCOS = 'MPR' 
AND PCSACST.CSTDATE = '20150630'
AND PCSACST.CSTTYPE = 'SG'
GROUP BY DBSAITE.MITEM, DBSAITE.MPDSC, DBSAITE.MUTMS, MVSACPE.COSTUN,PCSACST.CSTTYAPP

I'd like to optimize the query someway, because join works with hundreds of thousands records and is very slow (3 minutes). 我想以某种方式优化查询,因为join可以处理数十万条记录,并且非常慢(3分钟)。

Any advice? 有什么建议吗?

First, rewrite the query using explicit JOIN syntax. 首先,使用显式JOIN语法重写查询。 If nothing else, this makes it easier to see what to do: 如果没有其他要求,这将使您更轻松地知道该怎么做:

select DBSAITE.MITEM, DBSAITE.MPDSC, DBSAITE.MUTMS, MVSACPE.COSTUN,  PCSACST.CSTTYAPP, 
SUM(PCSACST.CSTBURD1 + PCSACST.CSTBURD2 + PCSACST.CSTLABOR + 
PCSACST.CSTMAT + PCSACST.CSTSETUP + PCSACST.CSTEXTRN) as COSTO_STD 
from MVSACPE JOIN
     PCSACST
     ON PCSACST.CSTCOSC = MVSACPE.CODSOC AND
        PCSACST.CSTITEM = MVSACPE.CODITM JOIN
     DBSAITE
     ON MVSACPE.CODITM = DBSAITE.MITEM
WHERE DBSAITE.MCOSC = 'GRS' AND
      MVSACPE.CODSOC = 'GRS23' AND
      MVSACPE.DTPERI = '201512' AND
      MVSACPE.CODMAG = 'ALL' AND
      MVSACPE.CODCOS = 'MPR' AND
      PCSACST.CSTDATE = '20150630' AND
      PCSACST.CSTTYPE = 'SG'
GROUP BY DBSAITE.MITEM, DBSAITE.MPDSC, DBSAITE.MUTMS, MVSACPE.COSTUN,PCSACST.CSTTYAPP;

Indexes will probably help the query. 索引可能会帮助查询。 It is unclear which of the conditions are most selective. 目前尚不清楚哪种条件最有选择性。 Lacking other information, a good place to start is with these: 缺乏其他信息,一个不错的起点是以下这些:

- `MVSACPE(CODSOC, DTPERI, CODMAG, CODCOS, CODITM)`
- `PCSACST(CSTCOSC, CSTITEM, CSTDATE, CSTTYPE)`
- `DBSAITE(MITEM, MCOSC)`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM