MySQL 索引类型
2017-08-25 本文已影响262人
刺風
MySQL目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。
一、FULLTEXT
即为全文索引,目前只有MyISAM引擎支持。不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%”
这类针对文本的模糊查询效率较低的问题。
一、HASH
由于hash索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些:
- Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。
- Hash 索引无法被用来避免数据的排序操作。
- Hash 索引不能利用部分索引键查询。
- Hash 索引在任何时候都不能避免表扫描。
- Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
三、BTREE
BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中,如二叉树一样,每次查询都是从树的入口root开始,依次遍历node,获取子节点上的数据。
四、RTREE
RTREE在mysql很少使用,仅支持geometry数据类型,相对于BTREE,RTREE的优势在于范围查找。