我阅读了有关http://www.sql-server-performance.com/2007/clustered-indexes上sql server数据库的技巧。
最后,作者提到:“由于每个表只能创建一个聚集索引,所以需要额外的时间仔细考虑如何使用它。”
我的问题是:
*为什么在sql server中每个表只创建一个聚集索引?
发布于 2014-01-30 12:55:14
聚集索引:
聚集索引定义了数据在磁盘上物理排序的方式。只有一种方法可以对数据进行物理排序。因此,每个表只能有一个聚集索引。
为什么关心聚集索引?
如果我们将聚集索引放在表上,那么数据的检索速度要快得多,因为sql server不需要读取整个数据--取决于查询。但是数据检索要快得多。
注意到:虽然可以在单个表上创建多个非聚集索引。
发布于 2014-01-30 15:09:04
这只是Server的实现决策。理论上,可以有任意数量的聚类索引。MongoDB和MyISAM没有集群索引,并将数据存储在一个平面文件中。InnoDB for MySQL有一个群集索引,即主键,如果没有声明主键,则可能隐藏主键。TokuDB for MySQL和TokuMX (我都做过这两项工作)允许用户拥有多个集群索引,其隐含的折衷方法是使用更多的磁盘空间来进行更快的查询。
发布于 2014-01-30 12:49:17
因为聚集索引是将表中的数据写入磁盘时排序的方式。换句话说,聚集索引是表。
这也是为什么不能在聚集索引上指定包含的列的原因--因为根据其性质,所有列都已经包括在内。
https://stackoverflow.com/questions/21456971
复制相似问题