我有一个查询,它使用 select 运行得更快,top 100而不使用top 100. 返回的记录数为 0。你能解释一下查询计划的差异或分享解释这种差异的链接吗?
top文本的查询:SELECT --TOP 100
*
FROM InventTrans
JOIN
InventDim
ON InventDim.DATAAREAID = 'dat' AND
InventDim.INVENTDIMID = InventTrans.INVENTDIMID
WHERE InventTrans.DATAAREAID = 'dat' AND
InventTrans.ITEMID = '027743' AND
InventDim.INVENTLOCATIONID = '???? ?????' AND
InventDim.ECC_BUSINESSUNITID = '?????????';
Run Code Online (Sandbox Code Playgroud)
top):
top):SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = …Run Code Online (Sandbox Code Playgroud) performance sql-server t-sql query-performance performance-tuning
我有一个使用 Azure SQL 数据库的网站,我有一些问题:
在设计视图(添加 Order By 子句)时,SSMS 中的向导会自动添加
最高 (100)%
我们需要它做什么?是否有关于 TOP (100) PERCENT 的任何性能考虑因素?
谢谢
最近我创建了一个位于Database > System Databases > master > Tables > my_table. (参考下图)
现在我想创建一个可以访问此表的用户,但不知道它是如何工作的。(我想用 C# 连接到这个表)
当我还原数据库时,还原操作经常卡住并且等待类型为ASYNC_IO_COMPLETION. 它可以处于这种状态 10-20-30 分钟,直到它继续前进PREEMPTIVE_OS_WRITEFILEGATHER,这是进度 ( percent_complete) 开始增长的时候。
但是,如果我看到ASYNC_IO_COMPLETION并中断恢复过程然后再次运行它,我会立即看到PREEMPTIVE_OS_WRITEFILEGATHER并percent_complete上升。
最好理解这种行为并了解是否有更合适的方法来加速还原操作。谢谢
我在从应用程序 (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) …Run Code Online (Sandbox Code Playgroud) performance sql-server sql-server-2008-r2 microsoft-dynamics
这个查询在我的系统上运行了大约 15 秒。查询计划在这里。我相信主要问题就在这里,优化器选择嵌套循环并误认为基数:
表 _Reference65215 和 _InfoRg100966 分别有 454 和 3332 行。如果我在这里强制 SQL Server 使用哈希匹配,则执行时间会下降到 2 秒。
我不能在这里使用任何类型的提示,因为代码来自平台。该平台使用自己的语言,然后将其解释为 T-SQL。我可以更改查询。统计数据是最新的。Maxdop 1 是平台供应商的一般建议
选择嵌套循环的原因可能是什么以及如何解决它?也许还有其他值得关注的地方?
EXEC sp_executesql
N'SELECT TOP 45 T1._IDRRef,
T1._Marked,
T1._Number,
T1._Date_Time,
T1._Posted,
T1._Fld74271RRef,
CASE
WHEN T1._Fld74272RRef=@P1
THEN T1._Fld74307RRef
ELSE T1._Fld74272RRef
END,
T1._Fld74273,
T1._Fld74274RRef,
T1._Fld74281,
CASE
WHEN T1._Fld74272RRef=@P2
THEN 0x000100DD
WHEN T1._Fld74272RRef=@P3
OR T1._Fld74272RRef=@P4
OR T1._Fld74272RRef=@P5
THEN 0x0000FF7E
ELSE 0x0000FF3E
END,
CASE
WHEN T1._Fld74272RRef=@P6
THEN T1._Fld74284RRef
WHEN T1._Fld74272RRef=@P7
OR T1._Fld74272RRef=@P8
OR T1._Fld74272RRef=@P9
THEN T1._Fld74285RRef
ELSE T1._Fld74282RRef
END,
T1._Fld74289RRef,
T1._Fld74303, …Run Code Online (Sandbox Code Playgroud) 据我所知,temp_buffers设置用于存储临时表数据的服务。
PGDATA但是,当我创建了一个临时表时,会立即在主数据库中为其创建文件。因此,我希望能就几个问题得到帮助。
a.会发生什么
?临时表数据是否temp_buffers 足以存储临时表数据?
b. 临时表数据是否temp_buffers 不足以存储临时表数据?
是否存在temp_buffers 设置不足而导致溢出的情况pgsql_tmp?
Microsoft SQL Server 2017 (RTM-CU16)
尝试db_owner通过作为数据库角色成员的用户更新统计信息时
EXEC sp_updatestats;
SQL Server 抛出错误:
消息 15247,级别 16,状态 1,过程 sp_updatestats,第 15 行 [批处理起始行 0] 用户无权执行此操作。
即使 MS在这里声明“数据库的所有权(dbo)”就足够了,但似乎并非如此。
需要帮助解决使用Ola Hallengren 的存储过程将数据库备份到共享文件夹的问题。
我有一个在 SQL Server 启动时执行的过程。它运行Ola Hallengren的DatabaseBackup程序。SQL Server 服务在NT Service.
该共享对运行 SQL 的计算机具有权限。
现在,如果DatabaseBackup手动执行它会很好。当它在启动时自动执行时失败并出现以下错误:
Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 786 [Batch Start Line 0] 目录 \\*** 不存在
如果我用Execute As DBO子句更改程序,它会失败并出现相同的错误。
我也试过AlterSP withExecute As Self子句 - 又是同样的错误。
所以问题是:
我该怎么做才能让它发挥作用?
\\machine2\backup\)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 ×10
performance ×3
security ×2
join ×1
perl ×1
permissions ×1
postgresql ×1
restore ×1
scalability ×1
t-sql ×1
tuning ×1
wait-types ×1