MySQL 索引类型

MySQL目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。

一、FULLTEXT

即为全文索引,目前只有MyISAM引擎支持。不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%”这类针对文本的模糊查询效率较低的问题。

一、HASH

由于hash索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些:

  1. Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。
  2. Hash 索引无法被用来避免数据的排序操作。
  3. Hash 索引不能利用部分索引键查询。
  4. Hash 索引在任何时候都不能避免表扫描。
  5. Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
三、BTREE

BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中,如二叉树一样,每次查询都是从树的入口root开始,依次遍历node,获取子节点上的数据。

四、RTREE

RTREE在mysql很少使用,仅支持geometry数据类型,相对于BTREE,RTREE的优势在于范围查找。

你可能感兴趣的:(MySQL 索引类型)