为什么在sql server中只能创建每个表的一个聚簇索引?

Had*_*ifi 5 sql sql-server database-administration

我在http://www.sql-server-performance.com/2007/clustered-indexes上阅读了有关sql server数据库的提示

最后,作者提到:"由于每个表只能创建一个聚簇索引,因此请花些额外的时间仔细考虑如何使用它."

我的问题是:

*为什么在sql server中只能创建每个表的一个聚簇索引?*

Pun*_*015 14

聚簇索引:聚簇索引定义数据在磁盘上物理排序的方式.并且只能有一种方法可以在物理上对数据进行排序.因此,每个表只能有一个聚簇索引.

为什么要关心聚集索引?如果我们将聚簇索引放在表上,那么数据的检索要快得多,因为sql server不必读取整个数据 - 取决于查询.但是数据检索要快得多.

注意:虽然您可以在一个表上创建多个非聚簇索引.


小智 5

这只是SQL Server的实现决策。从理论上讲,可以有任意数量的聚簇索引。MongoDB和MyISAM没有聚簇索引,并且将数据存储在平面文件中。InnoDB for MySQL具有一个群集索引,即主键,如果未声明主键,则该索引可能会隐藏。用于MySQL和TokuMX的TokuDB(我都在其中工作)允许用户拥有多个聚簇索引,而隐式的折衷是将更多的磁盘空间用于更快的查询。