当前位置:首页 » 编程语言 » sql聚集索引与非聚集索引的区别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql聚集索引与非聚集索引的区别

发布时间: 2022-04-04 17:05:57

‘壹’ 聚集索引和非聚集索引的区别是什么(详解)

聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。建议使用聚集索引的场合为: a.此列包含有限数目的不同值; b.查询的结果返回一个区间的值; c.查询的结果返回某值相同的大量结果集。 非聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不一致,聚集索引和非聚集索引都采用了B+树的结构,但非聚集索引的叶子层并不与实际的数据页相重叠,而采用叶子层包含一个指向表中的记录在数据页中的指针的方式。非聚集索引比聚集索引层次多,添加记录不会引起数据顺序的重组。建议使用非聚集索引的场合为: a.此列包含了大量数目不同的值; b.查询的结束返回的是少量的结果集; c.order by 子句中使用了该列。

‘贰’ sql Server 聚集索引和非聚集索引的区别分析

SQL SERVER提供了两种索引:聚集索引和非聚集索引。
其中聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大。非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,非聚集索引检索效率比聚集索引低,但对数据更新影响较小。

‘叁’ SQL聚集索引和非聚集索引的区别

数据库的索引,听起来挺神秘的,仔细想想。这些索引,其实就是平时咱们查东西时候常用的两种手段。无非就是为了提高我们找东西的效率而已。那么我们平时又是怎么查东西呢?

聚集索引:

聚集索引,来源于生活尝试。这中索引可以说是按照数据的物理存储进行划分的。对于一堆记录来说,使用聚集索引就是对这堆记录 进行 堆划分。即主要描述的是物理上的存储。

举个例子:

比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到102房间,理工类的放到103房间等等。这些存储的规则决定了每本书应该放到哪里。而这个例子中聚集索引为书的类别。
正式因为这种存储规则,才导致 聚集索引的唯一性。

误区:

有的人认为,聚集索引的字段是唯一的。这是因为sql server 中添加主键的时候,自动给主键所在的字段生成一个聚集索引。所以人们会认为聚集索引所加的字段是唯一的。
思考一下上面这个问题。杂志类的书放到101房间。那么如果杂志类的书太多,一个101房间存放不下。那么可能101,201两个房间来存放杂志类的书籍。如果这样分析的话,那么一个杂志类对应多个房间。放到表存储的话,那么这个类别字段 就不是唯一的了。

非聚集索引:

非聚集索引,也可以从生活中找到映射。非聚集索引强调的是逻辑分类。可以说是定义了一套存储规则,而需要有一块控件来维护这个规则,这个被称之为索引表。

继续使用上述提到的例子:

同学如果想去图书馆找一本书,而不知道这本书在哪里?那么这个同学首先应该找的就是 检索室吧。对于要查找一本书来说,在检索室查是一个非常快捷的的途径了吧。但是,在检索室中你查到了该书在XX室XX书架的信息。你的查询结束了吗?没有吧。你仅仅找到了目的书的位置信息,你还要去该位置去取书。

对于这种方式来说,你需要两个步骤:
1、查询该记录所在的位置。
2、通过该位置去取要找的记录。

区别:

聚集索引:可以帮助把很大的范围,迅速减小范围。但是查找该记录,就要从这个小范围中Scan了。
非聚集索引:把一个很大的范围,转换成一个小的地图。你需要在这个小地图中找你要寻找的信息的位置。然后通过这个位置,再去找你所需要的记录。
索引与主键的区别

主键:主键是唯一的,用于快速定位一条记录。
聚集索引:聚集索引也是唯一的。(因为聚集索引的划分依据是物理存储)。而聚集索引的主要是为了快速的缩小查找范围,即记录数目未定。
主键和索引没有关系。他们的用途相近。如果聚集索引加上唯一性约束之后,他们的作用就一样了。
使用场景

基于上述的两种规则,那么在什么时候适合聚集索引,什么时候适合非聚集索引?

‘肆’ SQL Server 聚集索引和非聚集索引的区别分

聚集索引和非聚集索引的根本区别:
1、表记录的排列顺序和与索引的排列顺序是否一致。
2、聚集索引一个表只有一个,非聚集索引一个表可以存在多个。
3、聚集索引存储记录是物理上连续存在,非聚集索引是逻辑上的连续。
聚集索引优点:
1、以最快的速度缩小查询范围。
2、以最快的速度进行字段排序。
聚集索引使用场合:
1、此列包含有限数目的不同值。
2、查询的结果返回一个区间的值。
3、查询的结果返回某值相同的大量结果集。
非聚集索引优点:
1、非聚集索引比聚集索引层次多。
3、添加记录不会引起数据顺序的重组。
非聚集索引使用场合:
1、此列包含了大量数目不同的值。
2、查询的结束返回的是少量的结果集。

‘伍’ SQL SERVER数据库里的唯一索引UNIQUE和聚集索引、非聚集索引有什么区别有什么区别,

索引实际上是一组指向表中数据的指针,索引的排列顺序其实就是这组指针的顺序.
聚集索引:表的物理存储顺序与指针(即逻辑)顺序相同
非聚集索引:物理与逻辑顺序不同
因为一个表只能有一个物理顺序,所以,聚集索引的个数最多只能是1.
其中唯一索引是给所做的索引增加了唯一性的约束,添加,修改索引列中数据时,不允许出现重复值.它可以是聚集索引,也可以是非聚集的,就看你如何定义
主键索引是把主键列定义为索引,主键具有唯一性,所以主键索引是唯一索引的一种特殊形式

‘陆’ sql server里面聚集和非聚集索引类型有什么区别

聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。

非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。

也就是说:聚集是物理排序。而非聚集是不用将表和视图进行物理排序。
也个表或视图中最多有250个非聚集排序或有249个非聚集排序一个聚集排序。

‘柒’ 聚集索引和非聚集索引的区别有哪些

1、含义上的区别

聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。

非聚集索引是一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

2、从行定位器的性质上来区别

非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。如果表有聚集索引,或者索引在索引视图上,则行定位器就是行的聚集索引键。

如果表是堆集,即非聚集索引,行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。

3、应用上的区别

聚集索引适合应用于含有大量非重复值的列;使用BETWEEN,>,>=,<或<=返回一个范围值的列;被连续访问的列;返回大型结果集的查询;经常被使用连接或GROUP BY子句的查询访问的列。

非聚集索引适用于经常被分组排序的列;大数目的不同值;频繁更新的列;外键列;主键列;频繁修改索引列。

‘捌’ 求教:请问聚集索引和非聚集索引,各自的区别,最好能详细点,

在聚集索引中,数据记录的组织是按照索引中的键值连续存储的,即具有相同键值的记录存储在一起,而非聚集索引则记录的存储是随意的.
比如有模式R(A,B),数据记录有{(1,1), (2,2),(3,2), (4,1),(5,3),(6,2), (7,1)},如果在B属性上创建聚集索引,则记录按照如下方式组织:
(1,1), (4,1), (7,1),(2,2),(3,2), (6,2), (5,3),
索引结构为<索引项,指针>,则索引内容为<1,0>,<2,3>,<3,6>
这样查询B=2是就可以连续地将记录(2,2),(3,2), (6,2)取得
而如果是非聚集索引则不是按照索引属性排列元组,假设按上面的的顺序排列
索引内容为<1,{0,3,6}>,<2,{1,2,5}>,<3,{4}>
查询是需要根据指针地址逐一取出记录

聚集索引的网络连接如下,可以参考一下
http://ke..com/view/1028053.htm

‘玖’ 在SQL数据库中,聚集索引和非聚集索引各什么特点

聚集索引是索引文件按照其查找码制定的顺序与数据文件中数据记录的顺序一致;否则便是非聚集索引