[英]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.