频道栏目
首页 > 资讯 > MySQL > 正文

MySQL下的索引类型及实现讲解

18-05-07        来源:[db:作者]  
收藏   我要投稿

索引能够提高查询的性能。

MySQL下的索引是在存储引擎层实现的,而不是在服务器层实现的。因此针对不同的存储引擎有不同的索引类型和实现。

索引分类

一、B+Tree索引(InnoDB、MyISAM存储引擎都支持)

大多数MySQL的存储引擎默认都是B+Tree索引。有了B+Tree索引,因此就不需要进行全表扫描了,只需要对树进行搜索,提高了搜索速度。还能进行排序和分组。

可以指定多个列作为索引列,多个索引列共同组成键。B+Tree索引适用于全键值、键值范围和键前缀查找,其中键前缀查找只适用于最左前缀查找。

B+Tree张成怎么样呢?

二、哈希索引(只有MEMORY存储引擎支持)

基于哈希表实现,优点是查找非常快。如下图(图片来自网络)

哈希索引就是采用一定的哈希算法,将键值换算成新的哈希值,检索时不需要想B+Tree那样从根结点开始查找,而是经过计算直接定位,所以速度很快。

但是也有限制:

1)只支持精确查找,不能用于部分查找和范围查找。无法排序和分组。因为原来有序的键值经过哈希算法很可能打乱。

2)如果哈希冲突很多,查找速度很慢。比如在有大量重复键值的情况下。

三、空间数据索引

MyISAM支持空间数据索引,空间索引会以所有维度来索引数据,可以有效的使用任意维度来进行组合查询。

四、全文索引

MyISAM支持全文索引,用于查找文本中的关键词,而不是直接比较索引中的值。

索引的优点

1)减少了服务器需要扫描的数据量。

2)因为B+Tree是有序的,直接可以用来做group by和order by.

3)通过B+Tree的存储,减少了I/O次数。因为索引一般很大,都是以索引文件的形式存储在磁盘上,B+Tree中每个非叶子节点没有指向某个关键字具体的信息的指针,因此每个节点可以存放更多的关键字数量,所以一次性读入内存所需要查找的关键字就越多,减少了I/O操作。

相关TAG标签
上一篇:Vagrant Shell 配置器使用方法
下一篇:Linux之文件系统管理(分区和文件系统)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站