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

如题所述

在聚集索引中,数据记录的组织是按照索引中的键值连续存储的,即具有相同键值的记录存储在一起,而非聚集索引则记录的存储是随意的.
比如有模式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://baike.baidu.com/view/1028053.htm追问

能举个简单的非聚集索引的例子,用表吧,如:
table1
id name
1 张三
2 李四
3 王五
4 马克

追答

这个表不适合,我给你换一个例子把
比如有个选课表
Sid class
1 英语
2 数据库
3 操作系统
4 数据库
5 操作系统

如果创建class上的 聚集索引,那么数据就要这样组织了,就是把相同的
Sid class 索引 (按拼音顺序)
3 操作系统 <----------操作系统
5 操作系统
2 数据库 <----------数据库
4 数据库
1 英语 <----------英语

追问

聚集索引我知道,我只是请教下您,非聚集索引的使用体现在什么地方?或者说,要怎么使用,才能真正意义的用到它_____比如这个表,

追答

由于 聚集索引在每个表上只能创建一个,因此在其他列上的索引 就都是非聚集索引了,常见的 B+树索引和 hash索引一般都是非聚集索引。对于这个表来说
id name
1 张三
2 李四
3 王五
4 马克
如果 记录的顺序不可改变,还需要在name上创建索引,则创建的 就是非聚集索引。
通常来说 在非主键列上创建的都是 非聚集索引

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-11
聚簇索引(cluster index)是指索引项的顺序与表中记录的顺序一致的索引。
非聚簇索引,唯一索引,表明此索引的每一个索引值只对应唯一的数据记录。
第2个回答  2011-06-11
聚集索引是指表中数据行的物理存储顺序与索引顺序完全相同
非聚集索引不改变表中数据物的物理存储位置,数据与索引分开存储,通过索引带有的指针与表中的数据发生联系
第3个回答  2021-03-01
聚集索引:也称 Clustered Index。是指关系表记录的物理顺序与索引的逻辑顺序相同。由于一张表只能按照一种物理顺序存放,一张表最多也只能存在一个聚集索引。与非聚集索引相比,聚集索引有着更快的检索速度。
MySQL 里只有 INNODB 表支持聚集索引,INNODB 表数据本身就是聚集索引,也就是常说 IOT,索引组织表。非叶子节点按照主键顺序存放,叶子节点存放主键以及对应的行记录。所以对 INNODB 表进行全表顺序扫描会非常快。
非聚集索引:也叫 Secondary Index。指的是非叶子节点按照索引的键值顺序存放,叶子节点存放索引键值以及对应的主键键值。MySQL 里除了 INNODB 表主键外,其他的都是二级索引。MYISAM,memory 等引擎的表索引都是非聚集索引。简单点说,就是索引与行数据分开存储。一张表可以有多个二级索引。
关键词:爱可生、开源数据库、数据监测、数据库运维
相似回答