sql-server – 主键列上的非聚簇索引?

我在表上有一个主键(比如ContactID). sql Server自动在此列上创建和维护聚簇INDEX.当我运行Tuning Advisor时(针对性能跟踪),它似乎建议在同一列上使用另一个INDEX – contactID列上的NON CLUSTERED索引.这将如何帮助 – 因为列上已经有聚簇索引?
@H_403_3@解决方法
如果查询调优顾问在主键上建议使用非聚集索引,则它还会在另一列(或多列)上推荐聚簇索引.

主键是约束,而不是索引. MS sql Server的假设是主键也是从表中检索数据的主要方式(通过’where ContactID = 2’或ContactID上的表之间的连接).该假设意味着还会在构成主键的列上自动创建聚簇索引.这种行为还有其他原因,但现在让我们保持这个简单.

现在,如果针对该表的大多数查询都是在联系人名字(ContactFirstName字段)上,例如’Where ContactFirstName LIKE’Much%’,那么sql服务器将建议将聚簇索引从ContactID更改为ContactFirstName,因为表只能有1个聚簇索引.主键约束仍然存在(并防止欺骗行),但表中的数据将由ContactFirstName物理排序.

调优顾问消耗的工作量将决定调整顾问推荐的内容.调优顾问还将仅使用来自工作负载的最高资源查询的百分比而不是整个工作负载来进行确定.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03