MySQL索引原理

MySQL索引背后的数据结构及算法原理

数据结构:B+树

关于B-Tree有一系列有趣的性质,例如一个度为d的B-Tree,设其索引N个key,则其树高h的上限为logd((N+1)/2),检索一个key,其查找节点个数的渐进复杂度为O(logdN)。从这点可以看出,B-Tree是一个非常有效率的索引数据结构。

B+树中间节点不存储数据,只存储指针。只有叶子节点存储数据,且叶子节点之间通过指针链接,可以方便连续访问。

MyISAM引擎:非聚集索引,索引文件放在磁盘,叶节点的data域存放的是数据记录的地址。

InnoDB引擎:聚集索引,数据文件本身就是索引文件,叶节点的data域存放的保存了完整的数据记录。第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。

MySQL索引详解

mysql的设计与优化专题(6】mysql索引攻略

理解MySQL——索引与优化

创建索引的三种操作:

  • CREATE INDEX

  • ALERT TABLE

  • CREATE TABLE ....[UNIQUE|FULLTEXT|SPATIAL] {INDEX|KEY} index_name [USING {BTREE | HASH}] (col_name [(length)] [ASC | DESC]...)

索引的使用场景:

  • 等值匹配

  • 范围匹配

  • 最左前缀匹配

  • 优化ORDER BY / GROUP BY等操作

索引的类型:

  • INDEX 普通索引

  • UNIQUE 唯一索引

  • PREMARY KEY 主键索引

你可能感兴趣的:(MySQL索引原理)