翼度科技»论坛 编程开发 mysql 查看内容

MySQL学习笔记-索引

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
索引

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。


  • 无索引的查找:全表扫描(将整张表遍历一遍),性能极低。
  • 有索引的查找:数据库系统在存储数据的同时会维护一种数据结构(如二叉树),当需要查找时,利用该数据结构进行查找,性能较高。
  • 索引的优缺点

一. 索引结构

MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构。


  • 索引在存储引擎中的支持情况


  • 平常所说的索引,如果没有特别指明,一般都是说B+树结构组织的索引。
1. B+树

1.1 二叉树



  • 一种经典的数据结构。
  • 二叉树的两个缺点:

    • 顺序存储二叉树时,会形成一条链表,二叉树的深度很大,效率很低。
    • 二叉树的度不大于2,在数据库中存有大量数据的时候深度很大,效率很低。

1.2 红黑树



  • 一种自平衡的特殊二叉树。
  • 可以解决二叉树可能形成链表的缺点,但是依旧存在数据量大时深度很大的问题。
1.3 B树(平衡多路查找树)



  • 一种自平衡的树。可以解决二叉树的两个缺点。
  • 一个节点可以拥有两个以上的子节点。
1.4 B+树



  • B树的变种。
  • B+树与B树的区别:

    • 所有的元素都会出现在叶子节点。
    • 叶子节点形成了一条单向链表。

1.5 MySQL中的B+树



  • 在MySQL中,对B+树进行了优化。在原有基础上,叶子节点改为了双向循环链表,提高区间访问的性能。
2. Hash

哈希索引就是采用一定的Hash算法,将键值换算成新的Hash值,映射到对应的槽位上,然后存储在Hash表中。
如果两个(或多个)键值映射到同一个槽位上,产生了Hash冲突,可以通过链表解决。

2.1 Hash索引的特点

<ol>只能用于对等比较(=,in),不支持范围查询(between,>, , = ,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具