Mysql之索引类型

来源:互联网 发布:淘宝装修店铺模板 编辑:程序博客网 时间:2024/06/07 02:38

(1)B-Tree索引:B-Tree意味着所有的值都是按顺序存储的,每一个叶子页到跟的距离相同。B-Tree索引能够加快数据访问的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。跟节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么找到对应的值,要么该记录不存在;B-Tree索引列是顺序组织存储的,索引很适合查找范围数据。B-Tree索引适合于全键值、键值范围或键前缀查找。

(2)哈希索引:哈希索引基于哈希表实现的,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算出一个哈希码,哈希码是一个较小的值,不同键值计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针,哈希索引本身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希查找的速度非常快。

(3)空间数据索引(R-Tree):空间索引可用于地理数据存储,它需要GIS相关函数的支持,由于MySQL的GIS支持并不完善,所以该索引方式在MySQL中很少有人使用。

4)全文索引:全文索引主要用于海量数据的搜索,比如淘宝或者京东对商品的搜索,你不可能使用like进行模糊匹配吧,MySQL从5.6开始支持InnoDB引擎的全文索引,功能没有专业的搜索引擎比如Sphinx或Solr丰富,如果你的需求比较简单,可以尝试一下MySQL的全文索引,否则建议使用专业的搜索引擎。

原创粉丝点击