ITPub博客

首页 > 数据库 > > MYSQL索引管理

MYSQL索引管理

作者:jerrysun 时间:2019-10-17 23:58:41 0 删除 编辑

MYSQL之索引原理

一、索引原理

1,什么是索引?

索引在MySQL中也叫‘键’或者‘key’,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要,减少IO次数,加快查询。

  2,索引的数据结构:b+树

  上图就是一个b+树的数据结构,我们的InnoDB索引的数据就是以这种结构存放的。比如说我们要查找29,首先会把磁盘块1加载到内存,发生一次IO,发现29在17和35 中间,就锁定磁盘块中的p2指向的磁盘模块3,然后把磁盘块3加载到内存,发生第二次IO,发现29在26和30之间,就锁定磁盘块3中p2指向的磁盘块8,然后把磁盘块8加载到内存,发生第三次IO,此时和29相比,有一值等于29,从而就找到了29。这样的b+树可以表示上百万的数据,如果上百万的数据查找也只需要三次IO,那么性能提高是非常大的,如果没有索引,每次数据项都要发生一次IO,总共需要上百万次的IO,得花多少时间。

3,b+树的性质

3.1 索引字段要尽量的小

通过上面的例子来看,基本上是b+树的层级高度决定了IO的次数,也决定了查询的效率,所以,要提高效率就应该减少b+树的高度。对于每个磁盘块所能存放的数据量是有限的。假设当前的所有数据大小为N,每个磁盘能存放某个数据的个数为m=磁盘块的大小/每个数据的大小,则高度为h=log(m+1)N,当数据一定时,m越大,h就越小。说明每个数据越小,高度越低,IO次数就越少,效率就更高。所以我们在建立索引的时候喜欢用id字段,而不是name字段,数字类型肯定比char类型占的空间小嘛。

3.2 索引的最左匹配原则特性

查询数据是从数据块的左边开始匹配,再匹配右边的。

二、聚集索引与辅助索引

数据库中的b+树索引可以分为聚集索引和辅助索引

  相同点:其内部都是b+树的形式,叶子节点都存放着数据

  不同点:聚集索引存放的是一整行所有数据,而辅助索引只存放索引字段的数据+主键

  1,聚集索引

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/151/viewspace-3142791/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-29

  • 博文量
    122
  • 访问量
    16191