背景信息-我有一个表,它用一个唯一的JobID (PK)和一个ClientID (一个客户端可以有很多作业)来存储作业信息,还有一堆数据堆的列。
我运行了sp_BlitzIndex,它返回了以下内容:
dbo.Job.PK_Job_1 (1):行锁等待: 399;总持续时间: 21分钟;平均持续时间:3秒;页锁等待: 171;总持续时间:2分钟;平均持续时间:1秒;锁升级尝试: 125,805;实际升级: 0。
这个表中只有35K行,但是它被大量使用并每隔几秒钟更新一次。当前索引在PK上,这是一个唯一的值。我对索引调优不太了解,但是如果我删除这个索引并为JobID + ClientID创建一个非聚集索引,那么我是否正确地降低了索引的攻击性?还是我让事情变得更糟了?
发布于 2017-01-09 17:03:32
对于访问数据库/服务器中的表或负载的表或查询,我们没有完整的了解,但据我们所知:
背景信息-我有一个表,它用一个唯一的JobID (PK)和一个ClientID (一个客户端可以有很多作业)来存储作业信息,还有一堆数据堆的列。
JobID和一个PRIMARY KEY约束(因此它是一个索引)。ClientID,它是Client的(显式或隐式)外键。FOREIGN KEY约束。定义了FOREIGN KEY吗?(JobID)上的索引是否是聚集的(“堆积的数据”表示不是,但我们不能确定)。表是群集的还是堆的?CREATE TABLE语句提供所有索引。这个表中只有35K行,但是它被大量使用并每隔几秒钟更新一次。
当前索引在PK上,这是一个唯一的值。我对索引调优不太了解,但是如果删除这个索引和.呢?
WHERE条件中使用的列上添加索引,并且(通常)没有问题和可能的改进。..。并为JobID + ClientID创建非聚集索引,.?
(JobID, ClientID)上已经有了一个唯一的索引,在(JobID)上建议的特定索引可能是无用的。(ClientID)上添加一个索引可能会帮助一些查询(那些连接到Client)。由于ClientID是一个FK,所以很可能仍然有这样的queries.,盲目地添加索引可能不会给您带来性能增益(甚至使情况更糟),所以在索引之前和之后进行测试。。。我是否走上了降低指数攻击性的正确道路?还是我让事情变得更糟了?
https://dba.stackexchange.com/questions/160423
复制相似问题