Nil*_*ish 5 sql-server sql-server-2005 clustered-index sql-server-2008
甲聚簇索引在索引的叶级存储实际数据的行.回到上面的示例,这将意味着与主键值123相关联的整个数据行将存储在该叶节点中.

问题 - 如果主键不存在,我将Name列设置为聚簇索引.在这种情况下,上述陈述会变得矛盾吗?
mar*_*c_s 18
没有为什么?
聚簇索引仍然将实际数据页面存储在其叶级别(最初)按name列进行物理排序.
叶级上方的索引导航结构将包含name所有行的列值.
整体而言:没有任何变化.
该主键是一个合乎逻辑的结构,设计为唯一标识表的每一行.这就是它必须是唯一且非空的原因.
该聚簇索引是一种物理构造,将(最初)phyiscally数据通过聚集键和排序相应安排的SQL Server页面.
在SQL Server中,默认情况下主要用作聚类键,两者不必放在一起 - 也不必与另一个存在.您可以拥有包含非群集主键的表或没有主键的群集表.两者都是可能的.拥有它是否明智是另一个讨论 - 但它在技术上是可行的.
更新:如果您的主键是您的群集密钥,则保证唯一性(因为主键必须是唯一的).如果您选择的某些列不是主键作为您的群集键,并且该列不保证唯一性,则SQL Server将在幕后为这些重复值添加一个4字节(INT)唯一程序列他们独特.所以,你可能有Smith,Smith1,Smith2等你的聚集索引导航结构的史密斯.
看到:
| 归档时间: |
|
| 查看次数: |
19361 次 |
| 最近记录: |