聚簇索引及其优缺点

简介: java事务控制

聚簇索引并不是单独的索引类型,而是一种数据存储方式。
B+树索引分为聚簇索引和非聚簇索引,主键索引就是聚簇索引的一种,非聚簇索引有复合索引、前缀索引、唯一索引。
在innodb存储引擎中,表数据本身就是按B+树组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚簇索引的叶子节点成为数据页。
Innodb通过主键聚集数据,如果没有定义主键,innodb会选择非空的唯一索引代替。如果没有这样的索引,innodb会隐式的定义一个主键来作为聚簇索引。
非聚簇索引又称为辅助索引,InnoDB访问数据需要两次查找,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。通过辅助索引首先找到的是主键值,再通过主键值找到数据行的数据页,找到数据页对应数据行。
Innodb辅助索引的叶子节点并不包含行记录的全部数据,叶子节点除了包含键值外,还包含了相应行数据的聚簇索引键。一张表可有多个二级索引。
优点:
数据访问更快,因为聚簇索引将索引和数据保存在同一个B+树中,因此从聚簇索引中获取数据比非聚簇索引更快。聚簇索引对于主键的排序查找和范围查找速度非常快。
缺点:
插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于InnoDB表,我们一般都会定义一个自增的ID列为主键。更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB表,我们一般定义主键为不可更新。二级索引访问要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

目录
相关文章
|
22天前
|
存储 关系型数据库 索引
9. 什么是聚簇索引什么是非聚簇索引 ?
**聚簇索引**是指数据和索引存储在一起,常见于InnoDB存储引擎的主键索引。**非聚簇索引**则相反,数据和索引分开存储,如MyISAM引擎中,索引只包含数据行指针。示意图展示了两种索引的区别。
16 0
|
2月前
|
自然语言处理 搜索推荐 关系型数据库
索引有哪些优缺点
索引有哪些优缺点
|
7天前
|
存储 关系型数据库 MySQL
聚簇索引与非聚簇索引b+树实现的区别
聚簇索引与非聚簇索引b+树实现的区别
14 0
|
4月前
|
存储 关系型数据库 数据库
|
10月前
|
存储 关系型数据库 MySQL
数据库索引原理
数据库索引原理
64 0
|
5月前
|
存储 关系型数据库 MySQL
MySQL索引的本质,MySQL索引的实现,MySQL索引的数据结构
MySQL索引的本质,MySQL索引的实现,MySQL索引的数据结构
30 1
|
9月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL索引的作用(索引的优缺点)
MySQL索引的作用(索引的优缺点)
167 0
|
10月前
|
数据库 索引
数据库索引的优缺点
数据库索引的优缺点
152 0
|
10月前
|
存储 数据库 索引
什么是聚簇索引什么是非聚簇索引 ?
什么是聚簇索引什么是非聚簇索引 ?
69 0
|
10月前
|
存储 数据库 索引
聚簇索引及其优缺点
聚簇索引是一种在数据库中使用的索引类型,它对表中的数据行进行物理上的重新排序,以便将具有相似值的行存储在相邻的磁盘页中。聚簇索引的目的是提高数据的访问效率,减少磁盘IO操作。
239 0