我们正在使用 SQL Server 2012 运行 Dynamics AX 2012 安装。我知道不应再使用游标,但 AX 正在使用它,我们无法更改此行为,因此我们必须使用它。
今天我发现了一个非常糟糕的查询,读取次数超过 5300 万次,执行时间超过 20 分钟。
我通过我们的监控工具 SentryOne 捕获了这个查询。
declare @p1 int
set @p1=1073773227
declare @p2 int
set @p2=180158805
declare @p5 int
set @p5=16
declare @p6 int
set @p6=1
declare @p7 int
set @p7=2
exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 bigint,@P2 nvarchar(5),@P3 bigint,@P4 nvarchar(8),@P5 bigint,@P6 bigint,@P7 bigint,@P8 bigint,@P9 bigint,@P10 bigint,@P11 bigint,@P12 bigint,@P13 bigint,@P14 bigint,@P15 bigint,@P16 bigint,@P17 bigint,@P18 bigint,@P19 nvarchar(5),@P20 bigint,@P21 bigint,@P22 bigint,@P23 bigint,@P24 bigint',N'SELECT T1.PRODUCT,T1.EXTERNALVENDPARTY,T1.LIFECYCLESTATUS,T1.RECID,T2.ECORESPRODUCT,T2.ECORESDISTINCTPRODUCTVARIANT,T2.SGE,T2.ECORESREFORDERNUM,T2.ORDERNUM,T2.RECID,T3.ECORESREFORDERNUM,T3.NAME1,T3.NAME2,T3.NAME3,T3.RECID,T4.ECORESPRODUCT,T4.EXTERNALITEMID,T4.ECORESDISTINCTPRODUCTVARIANT,T4.RECID,T5.RECID,T5.PERSON,T6.RECID,T6.NAME,T6.INSTANCERELATIONTYPE,T7.RECID,T7.NAME,T7.INSTANCERELATIONTYPE,T8.PARTY,T8.ACCOUNTNUM,T8.RECID,T9.RECID,T9.DISPLAYPRODUCTNUMBER,T9.INSTANCERELATIONTYPE,T10.PRODUCT,T10.CATEGORY,T10.RECID,T11.RECID,T11.CODE,T11.NAME,T11.INSTANCERELATIONTYPE FROM INVENTTABLE T1 CROSS JOIN ECORESPRODUCTORDERNUM …Run Code Online (Sandbox Code Playgroud) performance sql-server cursors sql-server-2012 microsoft-dynamics performance-tuning
SQL Server 2008 R2,Dynamics AX 2009 我们有这个丑陋的查询
DECLARE @P1 NVARCHAR(5), @P2 INT, @P3 INT, @P4 NVARCHAR(11), @P5 INT, @P6 NVARCHAR(5), @P7 NVARCHAR(11)SELECT A.SALESID,
A.LINENUM,
A.ITEMID,
A.SALESSTATUS,
A.LEDGERACCOUNT,
A.NAME,
A.EXTERNALITEMID,
A.TAXGROUP,
A.QTYORDERED,
A.SALESDELIVERNOW,
A.REMAINSALESPHYSICAL,
A.REMAINSALESFINANCIAL,
A.COSTPRICE,
A.SALESPRICE,
A.CURRENCYCODE,
A.LINEPERCENT,
A.LINEDISC,
A.LINEAMOUNT,
A.CONFIRMEDDLV,
A.RESERVATION,
A.SALESUNIT,
A.DIMENSION,
A.DIMENSION2_,
A.DIMENSION3_,
A.PRICEUNIT,
A.PROJTRANSID,
A.INVENTTRANSID,
A.CUSTGROUP,
A.CUSTACCOUNT,
A.SALESQTY,
A.SALESMARKUP,
A.INVENTDELIVERNOW,
A.MULTILNDISC,
A.MULTILNPERCENT,
A.SALESTYPE,
A.BLOCKED,
A.COMPLETE,
A.REMAININVENTPHYSICAL,
A.TRANSACTIONCODE,
A.TAXITEMGROUP,
A.TAXAUTOGENERATED,
A.UNDERDELIVERYPCT,
A.OVERDELIVERYPCT,
A.BARCODE,
A.BARCODETYPE,
A.INVENTREFTRANSID,
A.INVENTREFTYPE,
A.INVENTREFID,
A.ITEMBOMID,
A.LINEHEADER,
A.SCRAP,
A.DLVMODE,
A.INVENTTRANSIDRETURN,
A.PROJCATEGORYID,
A.PROJID,
A.INVENTDIMID,
A.TRANSPORT,
A.STATPROCID, …Run Code Online (Sandbox Code Playgroud)