Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 聚集索引和创建它的表是否都包含实际数据?_Sql Server_Indexing - Fatal编程技术网

Sql server 聚集索引和创建它的表是否都包含实际数据?

Sql server 聚集索引和创建它的表是否都包含实际数据?,sql-server,indexing,Sql Server,Indexing,聚集索引根据数据行的键值在表或视图中排序和存储数据行 这意味着如果一个表有聚集索引,那么该表的行将以与聚集索引相同的顺序存储在磁盘上 其次,聚集索引的叶节点包含创建它的表的数据页 所以,我的问题是,相同的数据存储在创建它的聚集索引和表中 如果是,那么需要按照与聚集索引相同的顺序对表进行排序吗?因为聚集索引本身将行级数据存储在其叶节点中 如果没有,那么创建聚集索引背后的实际理论是什么?数据存储在聚集索引的叶级——即是表数据 它不存储在表中,也不存储在聚集索引中-聚集索引的叶级是表数据。我在这里

聚集索引根据数据行的键值在表或视图中排序和存储数据行

这意味着如果一个表有聚集索引,那么该表的行将以与聚集索引相同的顺序存储在磁盘上

其次,聚集索引的叶节点包含创建它的表的数据页

所以,我的问题是,相同的数据存储在创建它的聚集索引和表中

如果是,那么需要按照与聚集索引相同的顺序对表进行排序吗?因为聚集索引本身将行级数据存储在其叶节点中


如果没有,那么创建聚集索引背后的实际理论是什么?

数据存储在聚集索引的叶级——即是表数据

它不存储在表中,也不存储在聚集索引中-聚集索引的叶级是表数据。

我在这里得到了答案:

聚集索引不是表的单独索引,而是表。 聚集索引不像其他索引类型那样是一个单独的实体,而是一种用于排序表和促进快速数据访问的机制


所以,我们可以说数据存储在聚集索引中,也可以说数据存储在表中。两者都是一样的。

您写道,“聚集索引的叶级数据就是表数据。”这是什么意思?根据我的理解,这意味着聚集索引的叶节点指向表的实际行。但根据聚集指数的定义,“聚集索引不存储指向实际行的指针。事实上,这就是聚集索引和非聚集索引之间的区别。非聚集索引同时存储一个值和一个指向保存该值的实际行的指针。聚集索引不存储指向实际行的指针。聚集索引实际上在其叶节点中存储行级数据。@user1780538:不,聚集索引的叶级不存储指向数据的指针-它是数据!聚集索引的叶级节点包含每个条目的所有列数据。非聚集索引包含索引列、任何可能包含的列和聚集键(作为指向数据的“指针”)@user1780538:请参阅以获得深入解释(包括一些显示发生了什么的图形)