数据库索引使用方式

使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,创建索引,命中索引几个方面来介绍索引。

一、索引结构

mysql5.5以上的默认存储引擎innodb,只显式支持BTree( 事实上从数据结构上来讲是B+树,mysql称之为BTree)索引,对于频繁访问的表,innodb会建立自适应hash索引,

即在B树索引基础上建立hash索引,可以显著提高查找效率,用户是无法自己指定的,除此之外还有Hash索引和全文索引(fullText索引)。

BTree索引 

BTree,顾名思义,就是所有的索引节点都按照balance tree的数据结构来存储。BTree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。

Btree中,每个结点包含:

1、本结点所含关键字的个数;

2、指向父结点的指针;

3、关键字;

4、指向子结点的指针;

更详细的B+树介绍参考https://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html

Hash索引 

Hash 索引由于使用了hash表结构,其检索效率很高,索引的检索可以一次定位,不像B+树索引需要从根节点到枝节点,

所以 Hash 索引的查询效率要远高于 B+树 索引。但是,Hash索引的使用范围非常有限。

    1.在MySQL中,只有HEAP/MEMORY引擎表才能支持哈希索引,InnoDB引擎的自适应哈希索引(adaptive hash index)不

   能在创建索引时指定。

   2.Hash索引仅支持=,>=,<=这几种条件运算,不支持排序,范围内查找,like等查询。

   3.Hash索引不支持组合索引中部分索引的查找。

   4.当Hash值重复较多时,索引速度可能不如BTree索引。

FullText索引

Full-text索引就是我们常说的全文索引,他的存储结构也是Btree。主要是为了解决在我们需要用like查询的低效问题。

只能解决’xxx%’的like查询。如:字段数据为ABCDE,索引建立为A、AB、ABC、ABCD、ABCDE五个。

三、创建索引

建立索引:

 create index 索引名 on 表名(索引字段名)

建立唯一索引(唯一索引要求字段中不会出现重复数据)

 create unique index 索引名 on 表名(索引字段名)

未完待续

猜你喜欢

转载自www.cnblogs.com/coder-lichao/p/10940338.html
今日推荐