聚簇索引
来源:互联网 发布:js 显示代码 编辑:程序博客网 时间:2024/05/20 23:07
前言
索引一般是一种数据结构,而聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于存储引擎的实现方式。
InnoDB的聚簇索引
MySQL的InnoDB的聚簇索引实际上在同一个结构中保存了B-TREE索引和数据行。一些数据库服务器允许选择哪个索引作为聚簇索引,而InnoDB是通过主键聚集数据的,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键作为聚簇索引。InnoDB只聚集在同一个页面中的记录。在B-TREE索引中,节点页包含索引列,叶子页包含行的全部数据。
聚簇索引的优点
- 可以把相关数据保存在一起。使用聚簇索引,可以减少磁盘I/O。
- 数据访问更快,因为行数据都在索引中。因此获取数据通常更快。
- 使用覆盖索引扫描的查询可以直接使用页节点中的主键值。
聚簇索引的缺点
- 插入速度依赖于插入顺序。按照主键的顺序插入是加载数据到InnoDB表中速度最快的方式。
- 更新聚簇索引列的代价很高,因为会强制InnoDB将每个被更新的行移动到新的位置。
- 基于聚簇索引的表在做插入或者更新操作导致行移动的时候,可能面临“页分裂”的问题。
- 聚簇索引可能导致全表扫描变慢,尤其是行比较稀疏,或者由于页分裂导致数据存储不连续的时候。
- 二级索引访问需要两次索引查找,而不是一次。因为二级索引叶子节点保存的不是指向行的物理位置的指针,而是行的主键值,根据这个值取聚簇索引中查找到对应的行。这里做了重复工作。
阅读全文
0 0
- 聚簇索引、非聚簇索引、覆盖索引
- 聚簇索引、非聚簇索引、覆盖索引
- 聚簇索引、二级索引、覆盖索引
- 聚簇索引、非聚簇索引
- 联合索引、聚簇索引
- MySQL (8) 聚集索引 非聚集索引 聚簇索引 稀疏索引 稠密索引
- 区分聚集索引、非聚集索引、聚簇索引、稀疏索引、稠密索引
- 聚簇索引和非聚簇索引以及二级索引
- 【索引】 聚簇索引和非聚簇索引区别
- mysql中的索引(聚簇索引和非聚簇索引)
- mysql聚簇索引和非聚簇索引以及二级索引
- MySQL索引:聚簇索引与非聚簇索引的区别
- MySQL索引:聚簇索引与非聚簇索引的区别
- 聚簇索引和非聚簇索引
- 聚簇索引与非聚簇索引
- 聚簇索引和非聚簇索引介绍
- 聚簇索引和非聚簇索引
- 聚簇索引和非聚簇索引
- 【UE4学习】20_常见问题汇总1
- maven中scope作用
- 面向对象--hasOwnProperty和constructor
- 看完让你彻底搞懂Websocket原理
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
- 聚簇索引
- 无GreenDao多线程下载
- Git几块区域关系
- hdoj 2188 悼念512汶川大地震遇难同胞——选拔志愿者
- 同域名同主机,让PC端和手机端显示不同网页
- JavaWeb-2.浏览器的缓存机制
- Hibernate与 MyBatis的比较
- Linux日志查看命令
- Apple Pay Merchant IDs配置流程与生成私钥说明文档