本文转载自微信公众号「运维开发故事」,构解作者老郑。引数转载本文请联系运维开发故事公众号。据结
索引是构解对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的引数特定信息。
二叉树(binary tree)是据结指树中节点的度不大于 2 的有序树,它是构解一种最简单且最重要的树。二叉树的引数递归定义为:二叉树是一棵空树,或者是据结一棵由一个根节点和两棵互不相交的,分别称作根的构解左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树
对于数组 { 1,2,3,4,5} 数据结构将成为了链表
特点:
二叉树.png
红黑树是据结一种特定类型的二叉树,它是构解在计算机科学中用来组织数据比如数字的块的一种结构。若一棵二叉查找树是红黑树,则它的任一子树必为红黑树。
红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价较低, 其平均统计性能要强于 AVL 。
由于每一棵红黑树都是一棵二叉排序树,因此,在对红黑树进行查找时,可以采用运用于普通二叉排序树上的查找算法,在查找过程中不需要颜色信息。
红黑树数据结构如下图:
红黑树数据结构.png
特点:
B树数据结构.png
非叶子结点不存储数据,只存储索引(冗余),可以存放更多的索引
叶子结点包含所有索引字段
叶子结点用指针链接,提高区间访问的性能(可以提升范围查找的效率)
B+树数据结构.png
特点关键字:节点内有序,叶子结点指针链接,非叶子结点存储索引(冗余)
查询mysql 索引的数据页的大小:
- mysql> show global status like 'Innodb_page_size';
- +------------------+-------+
- | Variable_name | Value |
- +------------------+-------+
- | Innodb_page_size | 16384 |
- +------------------+-------+
为什么设置 16kb 呢?
Hash 数据结构.png
InnoDB 索引实现.png
如果查询的是通过 name = Alice 去查询的时候:
两个数据文件:
.frm 主要是存储表结构信息
.ibd 主要是存储索引和数据
MyISAM 存储引擎索引.png
三个数据文件:
.frm 数据结构文件
.myd 文件主要是存储数据
.myi 文件主要是存储索引信息
特征:
聚集/非聚集主要是索引文件是否和数据文件在一起。
查询效率上来说聚集索引不会跨文件查询效率会更加快。
多个字段组织成一个共同的索引
组合索引.png
索引的数据是被排序的,如果跳过字段的话是无法被使用的。
示例:
where name = 'Jeff' and age = 22 -- 命中索引
where age = 30 and postatin='manager' -- 不命中索引
where postation = 'dev' -- 不命中索引
参考资料
百度百科
责任编辑:武晓燕 来源: 运维开发故事 MySQL索引数据
(责任编辑:娱乐)
华电国际(600027.SH)公布消息:拟购买蒙东能源45.15%股权及福源热电36.86%股权
前10月全国规模以上工业发电同比增长10.0% 水电同比下降11.9%