相关疑难解决方法(0)

sp_cursorprepexec 导致 5300 万次读取?

我们正在使用 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

9
推荐指数
1
解决办法
1219
查看次数

我应该使用查询提示吗?

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)

sql-server tuning microsoft-dynamics

1
推荐指数
1
解决办法
187
查看次数