小编Ser*_*dia的帖子

消除会降低性能的键查找(集群)运算符

如何消除执行计划中的 Key Lookup (Clustered) 运算符?

tblQuotes已经有一个聚集索引 (on QuoteID) 和 27 个非聚集索引,所以我不想再创建了。

我将聚集索引列QuoteID放在我的查询中,希望它会有所帮助 - 但不幸的是仍然相同。

执行计划在这里

或查看它:

在此处输入图片说明

这是 Key Lookup 运算符所说的:

在此处输入图片说明

询问:

declare
        @EffDateFrom datetime ='2017-02-01',
        @EffDateTo   datetime ='2017-08-28'

SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

IF OBJECT_ID('tempdb..#Data') IS NOT NULL
    DROP TABLE #Data 
CREATE TABLE #Data
(
    QuoteID int NOT NULL,   --clustered index

    [EffectiveDate] [datetime] NULL, --not indexed
    [Submitted] [int] NULL,
    [Quoted] [int] NULL,
    [Bound] [int] NULL,
    [Exonerated] [int] NULL,
    [ProducerLocationId] [int] …
Run Code Online (Sandbox Code Playgroud)

performance sql-server execution-plan sql-server-2012 bookmark-lookup query-performance

24
推荐指数
2
解决办法
3万
查看次数

可以自己搭建数据仓库吗?

我在保险公司工作一年多一点,我的 SQL 经验大约 2-3 年,包括 SSIS、SSRS。我们有大约 1 TB 的数据。

可以自己搭建数据仓库吗?我应该根据我的经验这样做吗?

我可以从很多材料和 SQL 组中获得帮助。但是,还是太复杂了?

谢谢

data-warehouse sql-server ssis

4
推荐指数
2
解决办法
651
查看次数

是否可以使用 sp_WhoIsActive 查看阻止者的主机名或计算机名?

我正在使用 sp_WhoIsActive。

当服务器发生阻塞时,我想快速确定谁是罪魁祸首。

专栏login_name没有给我太多关于拦截器的信息,因为有数百人使用公司的应用程序并在相同的下登录login_name

我可以看到blocking_session_id,但这并没有告诉我阻止者的host_name.

还有一个专栏host_name,但这是一个waiter(不是阻止者)

那么有什么方法可以快速找到该用户host_namemachine name任何其他身份的用户是谁呢blocker

sql-server t-sql sp-whoisactive

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

为什么将 SQL 代理置于离线状态会导致 WSFC 在被动节点上进行故障转移?

我有带有仲裁磁盘的 2 节点 Windows 故障转移群集。SQL 代理不是集群的资源。

我需要在服务器上启用服务代理;为此,我需要将 SQL Agent 设置为离线,运行 tsql 语句,然后简单地将其重新联机。

但是,一旦我停止使用 SSMS 的 SQL 代理,Windows 就会故障转移到一个被动节点。我想,因为 SQL Agent 没有在集群管理器中列为资源,所以我需要从活动节点停止它,进行更改,然后将其重新联机。

问题是:

  1. 为什么停止不属于集群的服务会导致集群故障转移?

  2. 在我的情况下,停止 SQL Agent 的正确方法是什么?以维护为例

我在我的测试集群上模拟了相同的操作,一切正常,集群没有故障转移。相同的集群结构,但没有仲裁。

更新: 右键单击集群名称本身,我可以在属性类型下看到 SQL 代理。这是否意味着所有这些资源都在集群中,即使它们在“角色”下不可见?

在此处输入图片说明

sql-server windows clustering high-availability

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

为什么计算列会突然降低性能?

用户可以在上午 10 点之前运行报告。在同样的报告变得非常缓慢之后,有时用户只是没有耐心等待。经过一些故障排除后,我找到了导致延迟的列。它是计算列,它使用函数来带来结果。

大约在同一时间,我收到了另一个关于运行缓慢报告的抱怨,那总是工作正常。经过一些故障排除后,我发现了导致延迟的列:

where (Amount - PTD) <> 0
Run Code Online (Sandbox Code Playgroud)

同样,该Amount列是计算列。

所以我的问题是:为什么总是作为报告一部分的所有突然计算列开始显着降低性能?大约在上午 10 点之后真正会发生什么?如果我制作这些列有persisted什么缺点?

谢谢

--FUNCTION 带列:

ALTER FUNCTION [dbo].[CalcInvoiceAmtPTD]
(@SInvNum INT, @entityGuid uniqueIdentifier) RETURNS MONEY
AS
BEGIN
    DECLARE @Amt MONEY

    declare @toplevel uniqueidentifier
    set @toplevel = (select dbo.gettoplevelentity(@entityguid))

    declare @t table 
    (
        Guid uniqueidentifier
    )

    insert into @t select * from dbo.getlinkedentities(@toplevel) where guid is not null
    declare @tbl table (amount money, glacctid int)

    select @amt = isNull(sum(amount), 0) from tblfin_journalpostings jp
        inner join tblfin_journal …
Run Code Online (Sandbox Code Playgroud)

performance sql-server t-sql

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

我应该获得什么 Microsoft DBA 证书?

我正在考虑获得 Microsoft DBA 认证,但是试图找出我应该学习的确切证书有点令人困惑。

我的公司使用本地 SQL Server 2017,但似乎 Azure 数据库变得非常流行。那么,现场会消失吗?

“MCSA:SQL 2016 数据库管理”是我需要的吗?

如果我收到“MCSA:SQL 2016 数据库管理”,我是否能够管理 Azure DB?那有多不同?

谢谢

sql-server sql-server-2016 certificate

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