SQL Server 中的复合聚集索引

发布于 2024-09-08 07:26:18 字数 202 浏览 5 评论 0原文

我有一个表,其中 IDENTITY 列作为主键(经典 ID 列)。

SQL Server 自动为该主键创建聚集索引。

我的问题是:

  • 我可以有一个包含更多列的唯一 CLUSTERED INDEX 组合吗?

如果是,我如何删除默认的聚集索引并使用此属性重新创建一个新索引。

感谢您的支持

I have a table with a IDENTITY Column as Primary Key (a classic ID column).

SQL Server create automatically a Clustered Index for that Primary Key.

My question is:

  • Can I have a only single CLUSTERED INDEX composite with more columns?

If yes, how can I drop the default clustered index and recreate a new one with this attributes.

Thanks for your support

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烏雲後面有陽光 2024-09-15 07:26:18

是的,每个表只能有一个聚集索引 - 数据在物理上按该索引排列,因此不能有多个。

然而,我不建议使用复合聚集索引。为什么?因为聚集索引应该始终是:

  • 尽可能小 - 4 字节的 INT 是完美
  • 稳定的 - 永远不会改变,所以你不会对所有
  • 唯一的索引进行波纹更新 - 否则,SQL Server 将不得不“唯一化”你的条目对于人工 4 字节值,
  • 最佳方案是:不断增加的

INT IDENTITY 作为聚集索引是完美的 - 我建议您保持这种方式。

聚集索引列(或列集)也会添加到同一个表上每个非聚集索引的每个条目中 - 因此,如果您将聚集索引设置得很大,例如 20、50 字节或更多,那么您就开始浪费磁盘和服务器内存中的大量空间,这通常会降低系统性能。

在这里阅读有关聚集索引的所有内容以及它们应该成为良好的聚集索引:

Yes, you can only have a single clustered index per table - the data is physically arranged by that index, so you cannot have more than one.

I would however not advise to use a composite clustered index. Why? Because the clustered index should always be:

  • as small as possible - INT with 4 byte is perfect
  • stable - never change, so you don't have rippling updates through all your indices
  • unique - otherwise, SQL Server will have to "uniquify" your entries with artifical 4-byte values
  • optimal would be: ever increasing

INT IDENTITY is perfect as a clustered index - I would advise you keep it that way.

The clustered index column (or set of columns) is also added to each and every entry of each and every nonclustered index on that same table - so if you make your clustered index large, 20, 50 bytes or more, you begin to be wasting a lot of space - on disk and in your server's memory, which generally degrades your system performance.

Read all about clustered indices and what they should be to be good clustered indices here:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文