I have a problem with the following query executing from the application (Microsoft Dynamics AX):
DECLARE @p1 INT;
SET @p1 = NULL;
DECLARE @p2 INT;
SET @p2 = 0;
DECLARE @p5 INT;
SET @p5 = 2 + 4096;
DECLARE @p6 INT;
SET @p6 = 8193;
DECLARE @p7 INT;
SET @p7 = 0;
EXEC sp_cursorprepexec
@p1 OUTPUT,
@p2 OUTPUT,
N'@P1 nvarchar(5),@P2 int,@P3 nvarchar(5),@P4 int,@P5 nvarchar(5),@P6 nvarchar(5),@P7 datetime,@P8 nvarchar(21),@P9 numeric(28, 12)',
N'SELECT A.INVENTTRANSIDFATHER,B.INVENTTRANSID,B.TRANSREFID,C.MODELGROUPID,C.COSTGROUPID,C.DIMENSION,C.DIMENSION2_,C.DIMENSION3_ FROM INVENTTRANS A,INVENTTRANS B,INVENTTABLE C WHERE ((A.DATAAREAID=@P1) AND (A.TRANSTYPE=@P2)) AND ((B.DATAAREAID=@P3) AND (((B.INVENTTRANSID=A.INVENTTRANSIDFATHER) AND (B.TRANSREFID=A.TRANSREFID)) AND (B.TRANSTYPE=@P4))) AND ((C.DATAAREAID=@P5) AND (C.ITEMID=B.ITEMID))
AND EXISTS (SELECT ''x'' FROM INVENTSETTLEMENT D WHERE ((D.DATAAREAID=@P6) AND ((((D.TRANSDATE=@P7) AND (D.VOUCHER=@P8)) AND (D.TRANSRECID=A.RECID)) AND (D.COSTAMOUNTADJUSTMENT<>@P9))))
GROUP BY A.INVENTTRANSIDFATHER,B.INVENTTRANSID,B.TRANSREFID,C.MODELGROUPID,C.COSTGROUPID,C.DIMENSION,C.DIMENSION2_,C.DIMENSION3_ ORDER BY B.INVENTTRANSID,B.TRANSREFID,C.MODELGROUPID,C.COSTGROUPID,C.DIMENSION,C.DIMENSION2_,C.DIMENSION3_',
@p5 OUTPUT,
@p6 OUTPUT,
@p7 OUTPUT,
N'dat',
8,
N'dat',
2,
N'dat',
N'dat',
'2017-05-17 00:00:00.000',
N'IM17008141934',
'0.000000000000';
EXEC sp_cursorfetch
@p2,
2,
1,
1;
The estimated plan for this query is here
The query keeps running for almost 3 hours. I have also captured metrics from WhoIsActive sp for this queries session:
wait_info (2ms)PAGEIOLATCH_SH:ecc_wrk:4(*)
CPU 88,765
CPU_delta 47
tempdb_allocations 0
tempdb_current 0
tempdb_allocations_delta 0
tempdb_current_delta 0
blocking_session_id NULL
blocked_session_count 16
reads 26,610,593
reads_delta 20,903
writes 0
writes_delta 0
physical_reads 1,212,764
physical_reads_delta 418
used_memory used_memory_delta 276
status 0
open_tran_count 1
host_name ***
database_name ***
program_name Microsoft Dynamics AX
As I can see it reads huge amount of data and executes for enormous amount of time.
I also captured the query and executed it in management studio where it took 1 second to complete. The actual execution plan is here:
I cannot understand what the problem might me and where to dig. Any help on what to do next will be deeply appreciated.