gpt4 book ai didi

sql-server - 为什么主键不是聚集索引而另一个索引是聚集索引?

转载 作者:行者123 更新时间:2023-12-01 11:47:57 26 4
gpt4 key购买 nike

我今天在检查 SQL Server 数据库的索引时注意到一个相对较小(非常旧)的表(3250 行),其中有一列用于图像数据的 varbinary(max) 类型。

主键是一个非聚集索引,还有另一个索引(在用户 ID 上并且已删除)是聚集索引。

同样,这是一张非常古老的 table ,创建这张 table 时周围已经没有人在场了。

那么,是否有任何理由以这种方式设置它?我应该改变它吗?如果需要,有什么我应该注意的吗?

最佳答案

索引是基于用例的。 PK 实际上是 PK 上的索引(您在索引中强制执行唯一性)并在查询中使用 PK 的地方使用。您可以很容易地想象这样一种情况,即查询中使用的列不依赖于 PK,而是使用一些其他的列组合。

现在想象一下,这个用例不是唯一的,而是主要的。在这种情况下,设计人员可以集中在这个用例上,而不是集中在使用频率较低的用例上。

我给你的建议是:

  1. 不要在不了解事物为何以现在的方式存在的情况下进行更改,因为最初的设计可能有充分的理由存在 - 例如优化。
  2. 在设计索引和集群时,请牢记您的系统设计和操作特征,不要盲目地添加内容。你应该用确凿的证据来做到这一点,而不仅仅是“悬而未决”的选择。

相信我,我是被它咬过才学会的。我尽量不在没有测试的情况下改变事情,这些测试提供了改变工作和不破坏其他事情的证据。在使用遗留系统时,这是至关重要的事情。

关于sql-server - 为什么主键不是聚集索引而另一个索引是聚集索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com