mysql索引

索引基础知识

什么是索引?

索引是一种特殊的文件,他们包含了数据表里所有记录的引用指针,本质上是一个排序列表,列表中存储着索引的值和对应数据行所在的物理地址,可以把索引看成是一本书的目录,目的就是加快数据的检索。

优点:加速查询,建设I/O次数

缺点:会占用存储空间,数据量大会影响数据增删改效率

索引的数据结构

常见的数据结构有二叉树,平衡二叉树,红黑树,B树,B+树等等等,mysql的innodb里面应用的就是B+树,这边我们了解下B树和B+树(B是Balance的意思);

B树(又称B_树、B-树)一个节点可以拥有多于2个子结点的多叉查找树;适合大量数据的读写操作,运用于数据库和文件系统;

B+树是B树的变体,也是多路搜索树,两者区别于:

  1. B+树有N棵子树的结点中含有N-1个关键字(key),每个关键字不存数据,只用来索引【这样的存储方式,让B+树每个非叶子结点存储的关键字数更多,数的层级更少,所以查询数据更快】;所有数据都保存在叶子结点中,所以每次查找的次数相同,查询速度要比B数更稳定;
  2. B+树所有的叶子结点中包含了所有关键字信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接,数据紧密型很高,缓存的命中率会B数高;
  3. B+树所有非叶子结点可以看成索引部分,结点中仅含其子树中最大(或者最小)关键字;
  4. B+树每个叶子结点包含了到相邻的节点链接,方便进行快速范围遍历;
  5. B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。

常见索引

主键索引

唯一索引

myisam和innodb的索引结构

如何提供SQL查询效率

mysql索引相关原则

 

posted @ 2019-08-16 16:40  伊戈  阅读(67)  评论(0)    收藏  举报