小编Geo*_*e K的帖子

'SELECT TOP' 性能问题

我有一个查询,它使用 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):

https://pastebin.com/cbtJpxFf

在此处输入图片说明

IO 和 TIME 统计信息(没有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

18
推荐指数
2
解决办法
4978
查看次数

缩放 Azure SQL 数据库会使我的网站宕机?

我有一个使用 Azure SQL 数据库的网站,我有一些问题:

  1. 缩放过程如何工作?是否有说明它的流程图?
  2. 缩放会导致我的网站停机吗?
  3. 我可以在扩展过程中将内容写入数据库吗?

scalability azure-sql-database

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

设计视图时 TOP (100) PERCENT

在设计视图(添加 Order By 子句)时,SSMS 中的向导会自动添加

最高 (100)%

我们需要它做什么?是否有关于 TOP (100) PERCENT 的任何性能考虑因素?

谢谢

sql-server

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

如何创建可以访问“master”数据库的用户

最近我创建了一个位于Database > System Databases > master > Tables > my_table. (参考下图)

现在我想创建一个可以访问此表的用户,但不知道它是如何工作的。(我想用 C# 连接到这个表)

在此处输入图片说明

sql-server

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

恢复卡在 ASYNC_IO_COMPLETION 中

当我还原数据库时,还原操作经常卡住并且等待类型为ASYNC_IO_COMPLETION. 它可以处于这种状态 10-20-30 分钟,直到它继续前进PREEMPTIVE_OS_WRITEFILEGATHER,这是进度 ( percent_complete) 开始增长的时候。

但是,如果我看到ASYNC_IO_COMPLETION并中断恢复过程然后再次运行它,我会立即看到PREEMPTIVE_OS_WRITEFILEGATHERpercent_complete上升。

最好理解这种行为并了解是否有更合适的方法来加速还原操作。谢谢

sql-server restore wait-types

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

帮我调整长时间运行的查询

我在从应用程序 (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

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

优化一个缓慢的嵌套循环连接

这个查询在我的系统上运行了大约 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)

performance join sql-server query-performance

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

临时表数据创建后去了哪里?

据我所知,temp_buffers设置用于存储临时表数据的服务。

PGDATA但是,当我创建了一个临时表时,会立即在主数据库中为其创建文件。因此,我希望能就几个问题得到帮助。

  1. a.会发生什么
    ?临时表数据是否temp_buffers 足以存储临时表数据?

    b. 临时表数据是否temp_buffers 不足以存储临时表数据?

  2. 是否存在temp_buffers 设置不足而导致溢出的情况pgsql_tmp

postgresql perl postgresql-extensions

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

sp_updatestats 似乎不适用于非系统管理员登录

Microsoft SQL Server 2017 (RTM-CU16)

尝试db_owner通过作为数据库角色成员的用户更新统计信息时

EXEC sp_updatestats;

SQL Server 抛出错误:

消息 15247,级别 16,状态 1,过程 sp_updatestats,第 15 行 [批处理起始行 0] 用户无权执行此操作。

即使 MS在这里声明“数据库的所有权(dbo)”就足够了,但似乎并非如此。

sql-server permissions

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

Ola Hallengren DatabaseBackup 在定位 Windows 目录时出错

需要帮助解决使用Ola Hallengren 的存储过程将数据库备份到共享文件夹的问题。

我有一个在 SQL Server 启动时执行的过程。它运行Ola HallengrenDatabaseBackup程序。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子句 - 又是同样的错误。

所以问题是:

我该怎么做才能让它发挥作用?

  • 文件路径以 UNC 路径的形式提供(例如\\machine2\backup\
  • 这是 SQL Express,所以我无权访问 SQL 代理作业。
  • 因此,这是一个配置为在 SQL Server 实例启动时运行的存储过程,而不是设置为在 SQL 代理启动时运行的 SQL 作业。

security sql-server ola-hallengren

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

我应该使用查询提示吗?

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
查看次数

为什么要使用域帐户进行 SQL Server 服务?

我想知道使用域帐户与使用本地帐户的优缺点。

任何帮助将不胜感激。

security sql-server active-directory

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