文档章节

MySQL聚簇索引&聚集索引&索引组织表

秋风醉了
 秋风醉了
发布于 2015/07/05 20:38
字数 1135
阅读 1857
收藏 3
点赞 0
评论 2

MySQL聚簇索引&聚集索引&索引组织表

http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html

聚簇索引和聚集索引(Clustered Index)

说起索引,不能不说B+树。

引用:http://blog.codinglabs.org/articles/theory-of-mysql-index.html

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。

我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search),二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

MySQL就普遍使用B+Tree实现其索引结构。

聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存了B+Tree索引和数据行。

当表有聚簇索引时,他的数据行实际上存放在索引的叶子页(leaf page)中。术语 “聚簇”表示数据行和相邻的键值紧凑地存储在一起(这并非总成立)。

因为无法同时把数据行存放在两个不同的地方,索引一个表只能有一个聚簇索引。

注:叶子页面包含完整的元组,而内节点页面仅包含索引的列(索引的列为整型)。一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支持。InnoDB对主键建立聚簇索引。如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替。如果不存在这样的索引,InnoDB会定义一个隐藏的主键,然后对其建立聚簇索引。一般来说,DBMS都会以聚簇索引的形式来存储实际的数据,它是其它二级索引的基础。

 

索引组织表(Index Organized Table, IOT) 

其实和聚簇索引说的是一个意思。

索引组织表(Index organized table, IOT)就是存储在一个索引结构中的表。与堆组织表无序存储不同的是,IOT中的数据按主键存储和排序。

相比堆组织表,索引组织表能够节省一部分空间,因为使用堆组织表时,我们必须为表和表的主键上的索引分别留出空间。而IOT则可以省去主键索引的开销,因为数据就是按顺序存储的,可以当做索引使。换句话说,如果你只会通过一个表的主键来访问这个表,这个表就适合创建成索引组织表。

举例:

 1.一个客户有很多地址信息,客户是一个表,客户地址信息是另外一个表。读取一个客户地址信息的时候,如果这个客户的所有地址信息都存放在相邻的地方,读取速度就会快一些。这个时候,客户地址信息表适合创建成IOT。

2. 经常查看一支股票的最近几天的信息,股票信息一般是千万级别的数据,如果能够把最近几天的信息存放在一起就会快很多。

=========END=========

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 223
博文 581
码字总数 411013
作品 0
东城
程序员
加载中

评论(2)

秋风醉了
秋风醉了

引用来自“辛星的极客世界”的评论

1好短啊 。。。。
能说明问题就行~~
辛星的极客世界
辛星的极客世界
1好短啊 。。。。
MySQL非聚簇索引&&二级索引&&辅助索引

MySQL非聚簇索引&&二级索引&&辅助索引 mysql中每个表都有一个聚簇索引(clustered index ),除此之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引(secondary indexes)。 以InnoDB来...

秋风醉了 ⋅ 2015/08/21 ⋅ 0

海量数据处理之数据库索引

前言:本文第一部分讨论数据库的索引及其优化,主要以sql server为例,第二部分我们从Mysql讨论它背后的数据结构和算法原理。 第一部分,数据库索引及其优化 一,什么是索引   数据库索引好...

城固如春 ⋅ 2016/10/17 ⋅ 0

MySQL 高性能索引详解

一,索引基础 1,索引的类型 :B-Tree索引 B-Tree索引意味着所有的值都是按顺序存放的,并且每一个叶子页到根到距离相同。B-Tree索引之所以能加快数据的速度,是因为存储引擎不再需要根据全表...

xrzs ⋅ 2012/11/30 ⋅ 0

MySQL索引总结

20多条数据源随机生成200万条数据,平均每条数据源都重复大概10万次,表结构比较简单,仅包含一个自增ID,一个char类型,一个text类型和一个int类型,单表2G大小,使用MyIASM引擎。开始测试未...

Hosee ⋅ 2016/04/07 ⋅ 0

mysql InnoDB UUID 主键 性能优化【原理篇】.md

mysql InnoDB uuid 主键 性能优化【原理篇】.mdmysql InnoDB UUID 主键 性能优化【实践篇】.md 有序uuidmysql InnoDB UUID 主键 性能优化【原理篇】.mdmysql InnoDB UUID 主键 性能优化【性能...

北京起航 ⋅ 2015/05/22 ⋅ 0

Mysql性能优化-索引

索引-80%优化处理 mysql 索引-存储。 1.优化索引。 2.最优索引。 普通sql - 好的索引-最优索引 索引优点:--索引本来就是有序 1.1:减少扫描量 1.2:避免排序+避免临时表产生 1.3:随机I/O变...

指尖Coding ⋅ 2016/12/23 ⋅ 0

mysql的概念理解(上)

这是一篇设计mysql数据库时候的一些小结。主要是对对MYISAM和INNODB俩种引擎进行简单介绍,还有表的一些属性进行详细介绍。 MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。MyISA...

熊猫88 ⋅ 2016/01/21 ⋅ 2

MySQL InnoDB存储引擎简析

MySQL存储引擎 InnoDB存储引擎 特点: 支持事务 行级锁 B树组织索引 支持外键 InnoBD 多版本(multi-versioned) InnoDB默认为每一行记录添加了三个字段: DBTRXID (6byte): 该记录最近一次发生...

Gen_zhou ⋅ 2016/04/21 ⋅ 0

Mysql索引学习

什么是索引 索引是一种文件,一种特殊的文件,索引文件中存放整张表所有记录的引用指针,相当于书本的目录。 当没有索引时,数据库查找记录就是便利整张表的记录 存在索引时数据库查询先从相...

AlpherJang ⋅ 2016/10/20 ⋅ 0

详解聚簇索引

一、聚族索引的构造 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚族索引实际上在同一个结构中保存了B-Tree索引和数据行。当表有聚族...

李_正 ⋅ 2016/03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux中的端口大全

1 被LANA定义的端口 端口 名称 描述 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 d...

寰宇01 ⋅ 17分钟前 ⋅ 0

Confluence 6 如何备份存储文件和页面信息

备份的 ZIP 文件包含有 entities.xml,这个 XML 文件包含有 Confluence 的所有页面内容和存储附件的目录。 备份 Zip 文件结构 页面的附件是存储在附件存储目录中的,通过页面和附件 ID 进行识...

honeymose ⋅ 19分钟前 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 23分钟前 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 29分钟前 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 30分钟前 ⋅ 0

oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

背景 6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 重要变化: 基于Spring Boot 2.0.X 不兼容 Spring Boot 1.5.X 期间踩过几个坑,分享出来给大伙,主要是关于...

冷冷gg ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 理发师小姐姐的魔法

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @冰冰棒- :分享田馥甄的单曲《My Love》 《My Love》- 田馥甄 手机党少年们想听歌,请使劲儿戳(这里) @Li-Wang :哎,头发又长了。。。又要...

小小编辑 ⋅ 今天 ⋅ 8

Kafka1.0.X_消费者API详解2

偏移量由消费者管理 kafka Consumer Api还提供了自己存储offset的功能,将offset和data做到原子性,可以让消费具有Exactly Once 的语义,比kafka默认的At-least Once更强大 消费者从指定分区...

特拉仔 ⋅ 今天 ⋅ 0

NEO智能合约之发布和升级(二)

接NEO智能合约之发布和升级(一),我们接下来说说智能合约的升级功能。 一 准备工作 合约的升级需要在合约内预先设置好升级接口,以方便在升级时调用。接下来我们对NEO智能合约之发布和升级...

红烧飞鱼 ⋅ 今天 ⋅ 0

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部