mysql索引的用途:

  保持数据的完整性;

  优化数据的访问性能

  改进表的链接(join)操作

  对结果进行排序

  简化聚合数据操作

 

索引的数据结构:B-、B+、R-、散列

散列实现对直接查找方式能提供最优的性能,但对一定范围的查找却效率底下。

B-树索引实现是一个专门为范围查询设计的。

 

B-树:

B-树结构支持插入、控制操作以及通过管理一系列树根状结构的彼此联通的节点中来做选择。B-树结构中有两种节点类型:索引节点和叶子节点。叶子节点是存储数据的,而索引节点是用来告诉用户存储在叶子节点中的数据的顺序,并帮助用户找到数据。B-树不是二叉树,二叉树只是一种简单的节点层次结构的实现。有关B-树的数据结构概念、数学证明以及技术描述的信息参见:http://en.wikipedia.org/wiki/Btree.

 

索引节点例题 索引节点的作用_数据结构

 

B+树

B+树是B-树结构的增强版,尽管B+树支持B-树的所有特性,他们之间最显著的不同点在于B+树中底层数据是按照提及的索引列进行排序的。B+树还通过在叶子节点之间附加引用来优化扫描的性能。http://en.wikipedia.org/wiki/B%2B_tree

 

散列

散列表数据结构是一个简单的概念,他将一种算法应用到给定值中以在底层数据存储系统中返回一个唯一的指针或位置。散列表的优点是始终以线性时间复杂度找到需要读取的行的位置,而不想B-树那样需要跨越多层节点来确定位置。

http://en.wikipedia.org/wiki/Hash_table

 

 

 

索引节点例题 索引节点的作用_数据_02

通信R-树

树数据结构支持基于数据类型对集合数据进行管理。目前只有MyIsam使用R-树支持空间索引。使用空间索引也有很多限制,比如只支持唯一的NOT NULL 列等。空间索引并不常用。http://en.wikipedia.org/wiki/R-tree。