mysql索引
索引基础知识
什么是索引?
索引是一种特殊的文件,他们包含了数据表里所有记录的引用指针,本质上是一个排序列表,列表中存储着索引的值和对应数据行所在的物理地址,可以把索引看成是一本书的目录,目的就是加快数据的检索。
优点:加速查询,建设I/O次数
缺点:会占用存储空间,数据量大会影响数据增删改效率
索引的数据结构
常见的数据结构有二叉树,平衡二叉树,红黑树,B树,B+树等等等,mysql的innodb里面应用的就是B+树,这边我们了解下B树和B+树(B是Balance的意思);
B树(又称B_树、B-树)一个节点可以拥有多于2个子结点的多叉查找树;适合大量数据的读写操作,运用于数据库和文件系统;
B+树是B树的变体,也是多路搜索树,两者区别于:
- B+树有N棵子树的结点中含有N-1个关键字(key),每个关键字不存数据,只用来索引【这样的存储方式,让B+树每个非叶子结点存储的关键字数更多,数的层级更少,所以查询数据更快】;所有数据都保存在叶子结点中,所以每次查找的次数相同,查询速度要比B数更稳定;
- B+树所有的叶子结点中包含了所有关键字信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接,数据紧密型很高,缓存的命中率会B数高;
- B+树所有非叶子结点可以看成索引部分,结点中仅含其子树中最大(或者最小)关键字;
- B+树每个叶子结点包含了到相邻的节点链接,方便进行快速范围遍历;
-
B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。
常见索引
主键索引
唯一索引
myisam和innodb的索引结构
如何提供SQL查询效率
mysql索引相关原则
没有一万,只怕万一

浙公网安备 33010602011771号