请清除我对此的怀疑,在SQL Server(2000及更高版本)中主键是否自动聚簇索引或者我们是否有选择在主键上使用非聚簇索引?主键是否总是聚集?
15
A
回答
25
不可以,它可以是非聚集的。但是,如果您没有明确将其定义为非聚簇,并且表上没有聚簇索引,则会将其创建为聚簇。
10
有人可能还会补充说,通常情况下它是不好的,以允许主键进行聚类。特别是,当主键由一个IDENTITY赋值时,它没有内在含义,因此任何保留表格相应的努力都将被浪费。
考虑一个产品,产品ID为INT IDENTITY PRIMARY KEY。如果这是集群化的,那么以某种方式相关的产品可能会遍布整个磁盘。根据我们可能查询的内容进行聚类可能会更好,如ManufacturerID或CategoryID。在这两种情况下,聚集索引(其他条件都相同)会使相应的查询效率更高。另一方面,指向这个子表的外键可能是聚类的一个很好的候选者(我的反对意见是实际上具有IDENTITY属性的列,而不是它的亲属)。因此,在上面的示例中,ManufacturerID可能是制造商表的外键,它被设置为IDENTITY。 列不应该被聚集,但产品中引用它的列可能会这样做以获得好处。
相关问题
- 1. 外键是否总是引用主键?
- 2. 标识主键是否总是非群集?
- 3. 为MySQL InnoDB聚集索引使用组合主键是否好?
- 4. 主键和聚集索引
- 5. 聚集主键和关系
- 6. 从非聚簇更改主键聚集
- 7. 聚集索引的外键VS主键
- 8. TreeNode总是聚焦
- 9. WebSQL是否支持主键?
- 10. sfGuardUser表是否有主键?
- 11. 主键总是从1开始?
- 12. MySQL外键 - 总是一个好主意?
- 13. MVC5主键总是需要序列
- 14. 没有主键的聚集索引
- 15. 映射表而不聚集主键
- 16. 单行汇总表是否应具有主键?
- 17. 下游对象是否总是聚合根?
- 18. 索引是否已涵盖群集主键?
- 19. 作为主键是否是一个坏主意?
- 20. 是否可以检查Informix表是否有主键
- 21. 是否使用单个主键或复合主键?
- 22. 如何创建复合主键是否已定义主键。 MySQL
- 23. 是否需要主键? (6NF实现)
- 24. 此表是否需要新的主键?
- 25. Cookie是否与主键相同?
- 26. RedBean是否需要“id”主键?
- 27. SQL主键 - 是否有必要?
- 28. Django的Field.unique是否创建主键?
- 29. 主键是否自动索引?
- 30. 主键是否自动成为索引?
身份在大多数情况下的存在意味着将有权访问记录的身份,因此身份领域的集群主键似乎是一个好主意。 – 2013-10-04 00:16:04