3

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

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

同样,这是一张非常古老的桌子,当这张桌子被创建时,周围已经没有人了。

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

4

1 回答 1

5

索引是基于用例的。PK 实际上是 PK 上的索引(您在索引中强制唯一性)并在查询中使用 PK 的地方使用。您可以轻松想象查询中使用的列不依赖于 PK 并使用其他列组合的情况。

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

我给你的建议是这样的:

  1. 不要在不了解事物为何存在的情况下进行更改,因为原始设计可能出于很好的原因而存在 - 例如优化。
  2. 考虑到您的系统设计和操作特性来设计您的索引和集群,不要只是盲目地添加东西。你应该用确凿的证据来做这件事,而不仅仅是“悬而未决”的选择。

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

于 2013-01-07T22:04:11.673 回答