I have a really poorly performing query in SQL which runs for hours sometimes. It looks like an inventory posting but I can't find the source. There is the (refactored) query from SQL trace:
SELECT
SUM(A.POSTEDQTY)AS f1
,SUM(A.RECEIVED)AS f2
,SUM(A.DEDUCTED)AS f3
,SUM(A.PICKED)AS f4
,SUM(A.REGISTERED)AS f5
,SUM(A.POSTEDVALUE)AS f6
,A.ITEMID AS f7
,B.INVENTSITEID AS f8
,B.INVENTLOCATIONID AS f9
,B.INVENTBATCHID AS f10
,B.INVENTSERIALID AS f11
,B.CONFIGID AS f12
,B.INVENTSIZEID AS f13
,B.INVENTCOLORID AS f14
,B.WMSLOCATIONID AS f15
,B.WMSPALLETID AS f16
,B.INVENTDIMID AS f17
,N'02558501_001'AS f18
,1 AS f19
,N'ffpl'AS DATAAREAID
,1 AS RECVERSION
,IDENTITY(bigint,1,1)AS RECID
FROM
INVENTSUM A,INVENTDIM B
WHERE
((A.DATAAREAID=N'ffpl')AND(A.CLOSED=1))
AND((B.DATAAREAID=N'ffpl')AND(B.INVENTDIMID=A.INVENTDIMID))
ANDEXISTS
(
SELECT'x'
FROM INVENTSETTLEMENT C
WHERE ((C.DATAAREAID=N'ffpl')AND(((((C.ITEMID=A.ITEMID)AND(C.CANCELLED=0))AND(C.TRANSDATE>{ts '2014-10-05 00:00:00.000'}))AND(C.SETTLEMODEL<>7))AND(C.COSTAMOUNTADJUSTMENT<>0)))
ANDEXISTS
(
SELECT'x'
FROM INVENTTRANS D
WHERE ((D.DATAAREAID=N'ffpl')AND(((D.RECID=C.TRANSRECID)AND(D.INVENTDIMID=A.INVENTDIMID))AND(D.DATESTATUS<{ts '2014-10-05 00:00:00.000'})))
ANDNOTEXISTS
(
SELECT'x'
FROM INVENTTRANS E
WHERE ((E.DATAAREAID=N'ffpl')AND(((E.ITEMID=A.ITEMID)AND(E.INVENTDIMID=A.INVENTDIMID))AND(E.DATESTATUS>={ts '2014-10-05 00:00:00.000'}))))
)
)
GROUPBY A.ITEMID,B.INVENTSITEID,B.INVENTLOCATIONID,B.INVENTBATCHID,B.INVENTSERIALID,B.CONFIGID
,B.INVENTSIZEID,B.INVENTCOLORID,B.WMSLOCATIONID,B.WMSPALLETID,B.INVENTDIMID ORDERBY A.ITEMID
,B.INVENTSITEID,B.INVENTLOCATIONID,B.INVENTBATCHID,B.INVENTSERIALID,B.CONFIGID,B.INVENTSIZEID
,B.INVENTCOLORID,B.WMSLOCATIONID,B.WMSPALLETID,B.INVENTDIMID
GO
Query performance is generally good, inventtrans is 5m rows and all other operations execute in a timely manner. For some reason, this query just seems to bog down SQL.
Regards,
MichaelWC