标签:引擎 png 数据库索引 系统 最大的 快速 sam 需要 数据库表
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
1、索引类型有:B树索引、哈希索引、空间数据索引(R树)、全文索引。
常见的索引结构有:哈希索引和B+树索引
1)哈希,例如HashMap,查询/插入/修改/删除的平均时间复杂度都是O(1);
2)B树,查询/插入/修改/删除的平均时间复杂度都是O(lg(n));
对于大多数的Mysql引擎都是B树索引结构,虽然哈希索引结构检索速度能够达到O(1)但是仅限于查询单个记录,对于大范围内的查询、排序、分组、比较等查询哈希结构就退化为O(n),而对于B树结构仍然可以保持O(lg(n))。
2、对于树形结构索引可以对比几种不一样的树形结构:二叉树、B树、B+树。
1)二叉树
- 因为一棵深度为k,最多有2^k-1个节点,所以当数据量大的时候,树的高度会比较高,数据量大的时候,查询会比较慢;
- 由于二叉树自身结构,每个节点只存储一个记录,可能导致一次查询有很多次磁盘IO;
2)B树
- 不再是二叉搜索,而是m叉搜索;
- 叶子节点,非叶子节点,都存储数据;
- 中序遍历,可以获得所有节点;
- 由于是m分叉的,高度能够大大降低,能够极大减少检索时间;
- 每个节点可以存储j个记录,利用局部性原理每一次读取磁盘数据能够将相近的数据全部读取出来,极大减少磁盘IO;
3)B+树
B+树是B树的变形,仍然是m叉搜索树,可以更加适合作为索引结构。
- 跟B树不一样的是非叶子节点不再存储数据,数据只存储在同一层的叶子节点上,所以B+树中根到每一个节点的路径长度相同。
- 叶子之间,增加了链表,获取所有节点,不再需要中序遍历;
- 范围查找,定位min与max之后,中间叶子节点,就是结果集,不用中序回溯,这个在范围查询在SQL中用得很多,这是B+树比B树最大的优势。
- 叶子节点存储实际记录行,记录行相对比较紧密的存储,适合大数据量磁盘存储;
- 非叶子节点,不存储实际记录,而只存储记录的KEY的话,那么在相同内存的情况下,B+树能够存储更多索引;
3、Mysql常用的两个引擎InnoDB和MyISAM都使用B+索引的差异
1)MyISAM引擎
标签:引擎 png 数据库索引 系统 最大的 快速 sam 需要 数据库表
原文地址:https://www.cnblogs.com/kma-3/p/9764731.html