我今天正在查看我们的 SQL Server 数据库的索引,并注意到一个相对较小(非常旧)的表(3250 行),其中有一列类型为 varbinary(max) 的图像数据。
主键是一个非聚集索引,并且有另一个索引(在用户 ID 上并被删除)是聚集的。
同样,这是一张非常古老的桌子,当这张桌子被创建时,周围已经没有人了。
那么,有任何理由以这种方式设置它吗?我应该改变它吗?如果我应该这样做,有什么我应该注意的吗?
我今天正在查看我们的 SQL Server 数据库的索引,并注意到一个相对较小(非常旧)的表(3250 行),其中有一列类型为 varbinary(max) 的图像数据。
主键是一个非聚集索引,并且有另一个索引(在用户 ID 上并被删除)是聚集的。
同样,这是一张非常古老的桌子,当这张桌子被创建时,周围已经没有人了。
那么,有任何理由以这种方式设置它吗?我应该改变它吗?如果我应该这样做,有什么我应该注意的吗?
索引是基于用例的。PK 实际上是 PK 上的索引(您在索引中强制唯一性)并在查询中使用 PK 的地方使用。您可以轻松想象查询中使用的列不依赖于 PK 并使用其他列组合的情况。
现在想象一下,这个用例不是唯一的,而是主要的。在这种情况下,设计人员可以集中在这个用例上,而不是在那些使用频率较低的用例上。
我给你的建议是这样的:
相信我,我是被它咬了才学会的。我尽量不要在没有测试的情况下改变事情,这些测试提供了改变工作和不破坏其他事情的证据。在使用遗留系统时,这是一件至关重要的事情。