Sql server 2005 sql server中的索引、内部工作和索引结构

Sql server 2005 sql server中的索引、内部工作和索引结构,sql-server-2005,indexing,internal,clustered-index,Sql Server 2005,Indexing,Internal,Clustered Index,当我们在列上创建一个聚集索引CIX_FirstNames时,比如说,FirstNames,那么SQL Server内部实际发生了什么 我读过,聚集索引创建数据的副本 那么,sql server是否会创建一个新的索引表,IndexTable,并将表中的所有名字复制到IndexTable,当搜索到名字时,它会从索引表中显示它 这是聚集索引的实际工作方式吗?这是一个太大的主题,无法在这里快速回答-您需要了解: 这篇文章非常详细地介绍了这一切 但简单地说:不创建聚集索引不会复制数据!你从哪里得到的

当我们在列上创建一个聚集索引CIX_FirstNames时,比如说,FirstNames,那么SQL Server内部实际发生了什么

我读过,聚集索引创建数据的副本

那么,sql server是否会创建一个新的索引表,IndexTable,并将表中的所有名字复制到IndexTable,当搜索到名字时,它会从索引表中显示它


这是聚集索引的实际工作方式吗?

这是一个太大的主题,无法在这里快速回答-您需要了解:

这篇文章非常详细地介绍了这一切

但简单地说:创建聚集索引不会复制数据!你从哪里得到的

聚集索引所做的是对数据进行重新排序(根据键),聚集索引的叶级节点是数据页,但它们只存在一次

更多感兴趣的资源:


索引视图将复制数据

“这样做的缺点是,索引视图是 基础表中的数据[…]”


创建非聚集索引时生成的数据副本也是如此?@sqlchild:是的,聚集索引的叶级节点是数据页,而不是数据页的副本,没有副本。@sqlchild:非聚集索引将复制属于索引的列。如果索引为(FirstName),则为“是”-该NC索引的索引页将包含作为副本的FirstName值。@sqlchild:所有索引都有索引页-这就是它们的全部要点。CI和NCI索引之间的区别在于叶级-而正常NCI索引只有另一组索引项(指向实际数据),在CI中,叶级节点是数据-无“指向数据”-它是data@sqlchild:是的,NCI当然有叶子级别-每棵树都有。但在NCI中,该叶级别也像所有其他级别一样包含“正常”索引项。是的,NCI不包含整个数据页——它只是指向数据页所在的聚集索引的指针。读这本书!你绝对需要学习这篇伟大的介绍文章-它解释了索引结构,并显示了可视化的图表。