如何消除执行计划中的 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
我在保险公司工作一年多一点,我的 SQL 经验大约 2-3 年,包括 SSIS、SSRS。我们有大约 1 TB 的数据。
可以自己搭建数据仓库吗?我应该根据我的经验这样做吗?
我可以从很多材料和 SQL 组中获得帮助。但是,还是太复杂了?
谢谢
我正在使用 sp_WhoIsActive。
当服务器发生阻塞时,我想快速确定谁是罪魁祸首。
专栏login_name没有给我太多关于拦截器的信息,因为有数百人使用公司的应用程序并在相同的下登录login_name。
我可以看到blocking_session_id,但这并没有告诉我阻止者的host_name.
还有一个专栏host_name,但这是一个waiter(不是阻止者)
那么有什么方法可以快速找到该用户host_name或machine name任何其他身份的用户是谁呢blocker?
我有带有仲裁磁盘的 2 节点 Windows 故障转移群集。SQL 代理不是集群的资源。
我需要在服务器上启用服务代理;为此,我需要将 SQL Agent 设置为离线,运行 tsql 语句,然后简单地将其重新联机。
但是,一旦我停止使用 SSMS 的 SQL 代理,Windows 就会故障转移到一个被动节点。我想,因为 SQL Agent 没有在集群管理器中列为资源,所以我需要从活动节点停止它,进行更改,然后将其重新联机。
问题是:
为什么停止不属于集群的服务会导致集群故障转移?
在我的情况下,停止 SQL Agent 的正确方法是什么?以维护为例
我在我的测试集群上模拟了相同的操作,一切正常,集群没有故障转移。相同的集群结构,但没有仲裁。
更新: 右键单击集群名称本身,我可以在属性类型下看到 SQL 代理。这是否意味着所有这些资源都在集群中,即使它们在“角色”下不可见?
用户可以在上午 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) 我正在考虑获得 Microsoft DBA 认证,但是试图找出我应该学习的确切证书有点令人困惑。
我的公司使用本地 SQL Server 2017,但似乎 Azure 数据库变得非常流行。那么,现场会消失吗?
“MCSA:SQL 2016 数据库管理”是我需要的吗?
如果我收到“MCSA:SQL 2016 数据库管理”,我是否能够管理 Azure DB?那有多不同?
谢谢