首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
请你说说聚簇索引和非聚簇索引
[问答题]
请你说说聚簇索引和非聚簇索引
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(96)
分享
纠错
68个回答
添加回答
40
阐禅
它们两个的最大区别就是索引和数据是否存放在一起。 聚簇索引:索引和数据存放在一起,叶子节点保留数据行。 非聚簇索引:索引和数据分开存放,叶子节点存放的是指向数据行的地址。
发表于 2022-05-07 12:56:21
回复(0)
12
大哥们不要卷我
聚簇索引:索引结果和数据一起存放的索引。 优点:聚簇索引的查询速度非常快,因为聚簇索引本身就是一个B+树,数据节点属于有序的,当定位到索引上的时候就相当于找到了数据。 缺点:更新的时候代价大,依赖有序的数据 非聚簇索引:索引结构和数据分开存放的索引。 优点:更新代价比聚簇索引小 缺点:依赖有序的数据,可能会二次回表查找
发表于 2022-06-10 16:19:46
回复(0)
11
十七_
两者主要的区别是数据和索引的分离,聚簇不分离,非聚簇分离
发表于 2022-04-24 15:37:19
回复(0)
10
Chaos1874
聚簇索引和非聚簇索引最大的区别是数据域是否和索引项是否分离。聚簇索引一般采用数据表中的具有唯一性的字段(primary,unique,rowid)作为索引采用b+树结构,在叶子节点存储具体的数据,所以其找到的索引也就找到了具体的数据。而非聚簇索引数据域和索引项是分离的,它的b+树叶子节点存储的是其数据对应的主键值,获取到该主键值后再回表进入聚簇索引中查找具体的数据。一个表中只能有一个聚簇索引,但是可以有多个非聚簇索引。
发表于 2022-06-11 15:34:57
回复(0)
4
万里迢迢
聚簇索引采用数据即索引方式,主要在innodb中,并且一般默认采用主键作为索引。非聚簇索引是除了聚簇索引的其他索引,可以采用非主键作为索引。在innodb中非聚簇索引里存储了主键,可以利用主键采用回表方式在聚簇索引查找数据,在myisam中非聚簇索引可以通过存储的地址直接在磁盘找到数据
发表于 2022-05-04 21:48:52
回复(0)
3
枉做好人
俩者的区别就是索引和数据是否分离。 1.聚簇索引: 索引与数据不分离,在Inndb的B+树中,索引存放在非叶子节点,而数据存放在叶子节点上。 2.非聚簇索引: 索引和数据分离,索引的叶子节点是存放数据行的地址。非聚簇索引也叫辅助索引,他的叶子节点存放的是主键,然后通过主键在聚簇索引中找到对应的数据,这个过程也叫回表。
发表于 2022-08-16 16:30:43
回复(0)
2
满脑子智慧
1.两者的主要区别是数据和索引是否绑定,聚簇索引是绑定的,且叶子节点存的表的所有记录,找到索引即找到了数据,非聚簇索引的数据和索引是分开的,索引树的叶子节点存数据行的地址,即该索引键值指向的主键。2.在InnoDB中,只有一个聚簇索引建在主键上,没有主键就自动生成一个聚簇索引,其他索引查询索引外字段都需要二次查找,即回表,而MyISAM中,所有索引都是非聚簇的。3.索引每页固定16kB,非聚簇索引不包含行记录的所有数据,所以每页可存更多键值,高度比聚簇要小。
发表于 2022-07-18 22:54:47
回复(0)
2
玖语
两者的主要区别是索引和数据是否分离。聚簇索引是将索引和数据存储到一起,找到了索引也就找到了数据。非聚簇索引是将索引和数据存储分离开,索引树的叶子结点存储了数据行的地址。在InnoDB中一个表有且仅有一个聚簇索引。其他都是非聚簇索引,使用非聚簇索引访问索引外的其他字段时要进行二次查找。在MyISAM中都是非聚簇索引,叶子节点存储数据地址,对于主键索引和普通索引在存储上没有区别。
发表于 2022-06-17 21:22:37
回复(0)
1
岑溪123
聚簇索引是指数据和索引存储在一起,索引树的叶子节点存储的是一行记录。非聚簇索引是指数据和索引分开存储的,索引树的叶子节点存储的是一行记录的地址。在InnoDB中一个表有只有一个聚簇索引,无论该表有没有主键,都会建立一个聚簇索引,只不过没有主键的话mysql会隐式的创建一个聚簇索引,非聚簇索引的叶子节点存储的是索引键值(如unique key)以及该索引键值指向的主键。MyIsam中主键和非主键索引都是非聚簇索引,不过MyIsam的非聚簇索引叶子节点存储的都是一行记录的地址。
编辑于 2023-03-29 14:01:26
回复(0)
1
yzhyu
聚簇索引和非聚簇索引的主要区别是数据和索引是否分离,聚簇索引是将数据和索引存储在一起,非聚簇索引将数据和索引分开存放,索引树的叶子节点存放数据行的地址。InnoDB中一个表只有一个聚簇索引,因为数据只有一份,并且该索引建立在主键上,其他的索引都是辅助索引(非聚簇索引),使用辅助索引访问索引外的字段时都需要进行二次查找(聚簇索引的叶子节点存放所有表中的数据,非聚簇索引叶子节点存放索引的键值和键值指向的主键,所以用非聚簇索引要先找到主键,再根据主键去找数据);MyISAM中的所有索引都是非聚簇索引。
发表于 2022-06-27 11:35:29
回复(0)
1
卡农变骤
聚簇索引说的是索引和数据放在同一个数据表中,而非聚簇索引的话,则是另开一张表来存储的,并且它不会存储完整的数据,它只会存储非聚簇索引和对应的聚簇索引,所以通过非聚簇索引查询数据的时候会比聚簇索引多一步回表的操作,因为它需要先去非聚簇索引的数据表中找到对应的数据,然后通过这个数据的聚簇索引到主表中拿到最终的数据,innodb通常会将id作为默认的聚簇索引,并且一张表中有且仅有一个聚簇索引。
发表于 2022-06-11 10:58:52
回复(0)
1
傻Jack
InnoDB才有聚簇索引,聚簇索引索引即数据,索引和数据是在一起的,而非聚簇索引如果是InnoDB,索引里面放着主键要回表。而MyISAM数据和索引分离,也相当于要回表,去找对应的数据
发表于 2022-04-30 20:35:09
回复(0)
0
紫薯韧性十足
(1)聚簇索引:索引结果和数据一起存放的索引。 优点:聚簇索引的查询速度非常快,因为聚簇索引本身就是一个B+树,数据节点属于有序的,当定位到索引上的时候就相当于找到了数据。 缺点:更新的时候代价大,依赖有序的数据 (2)非聚簇索引:索引结构和数据分开存放的索引。 优点:更新代价比聚簇索引小 缺点:依赖有序的数据,可能会二次回表查找
发表于 2025-03-19 12:05:20
回复(0)
0
小邑犹藏万家室
**聚簇索引:**通过这颗B+树能找到所有的数据(叶子节点存储数据) 主键索引 = 聚簇索引(InnoDB) **非聚簇索引**: 叶子节点存储的是地址(根据叶子节点存储的主键Id进行回表查询)、不存储数据。
发表于 2024-10-08 15:23:57
回复(0)
0
kz3
聚簇索引就是数据表的存储跟索引顺序一致,而索引和数据存放在一起,叶子节点保留数据行。非聚簇索引的索引和数据分开放,叶子节点存放指向数据行的指针
发表于 2024-09-06 15:45:25
回复(0)
0
一个编程牛
索引即数据、二次查询
发表于 2024-09-04 17:11:55
回复(0)
0
王鹏的好室友
聚簇索引:索引和数据放在一起,叶子节点保留数据。查询速度快,更改慢。 非聚簇索引:索引和数据分开存放,叶子节点存放指向数据行的地址。查询慢,更改快。
发表于 2024-08-21 19:18:17
回复(0)
0
牛客311133904号
聚簇索引(主键索引):将索引和数据存储在一起,叶子节点上是数据 非聚簇索引(非主键索引):索引和数据分开,叶子节点存放的是指向数据行的地址
发表于 2024-07-13 23:06:31
回复(0)
0
又菜又爱玩的牛马
聚簇索引整张表有且只有一个,这个索引一般是用于存储主键和表数据的关系的,非聚簇索引是指除此之外的所有索引结构,包括常规索引、唯一索引等,这一类索引主要存储的是索引列和主键的关系。二者的区别主要是在值的存储,聚簇索引存的是整个表的数据,而非聚簇索引存的是主键,当一张表未定义主键是会有一个默认生成的字段充当主键。当通过聚簇索引查询数据时可以直接将数据返回,而通过非聚簇索引查询时可能会回表查询,即先查到主键再通过主键查询数据
发表于 2024-05-13 20:27:39
回复(0)
0
钟情于风TuT
聚簇索引: 索引和数据放在一起,叶子节点存放的数据行和索引值 非聚簇索引:就是将数据与索引分开存储,叶子节点包含索引字段值及指向数据页数据行的主键
编辑于 2024-04-03 16:58:27
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
数据库
上传者:
real1993
难度:
68条回答
96收藏
2635浏览
热门推荐
相关试题
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
4.该校1997年男女教师的比例为...
资料分析
言语理解与表达
资料分析
评论
(1)
计算机在工作过程中,若突然停电,(...
计算机常识
普及
C++
Pascal
选择题
评论
(1)
来自
NOIP2008初赛普及组
Mysql中表student_in...
数据库
SQL
评论
(1)
SQL中,下列涉及空值的操作不正确...
SQL
评论
(0)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题