189 8069 5689

MySQL中的索引-创新互联

一、索引是什么?

索引是帮助MySQL 高效获取信息的数据结构(有序)。无索引时全表按顺序查找 效率低, 有索引时按照建立的索引来查找 效率高(图书馆书架标识、书本目录),

创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为龙门企业提供专业的网站制作、做网站,龙门网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。1.优缺点

优点:
(1)提高了数据检索的效率, 降低了数据库IO成本。
(2)按照索引列排序,降低了数据排序的成本、cpu的消耗。
缺点:
(1)索引列同样要占用空间
(2)索引大大提高了查询效率,但每次修改,插入、删除数据,效率会降低(要修改索引)。

二、索引结构

不同的存储引擎有不同的索引结构,主要的有:B+Tree索引、Hash索引、R-Tree(空间索引)、Full-text(全文索引)。
在MySQL中默认使用InnoDB存储引擎,该存储引擎默认的索引结构是 B+Tree。

1、B+Tree索引 :最常见的索引结构。 2. Hash索引: 底层用哈希表实现,只有精准匹配的列才能检索有效,不支持范围查询 3、R-Tree索引:空间索引是MYISAM一种特殊的索引,主要用于地理空间数据类型,较少使用。 4、Full-text: 是一种通过建立倒排索引,快速匹配文档的方式。

在这里插入图片描述

三、B+Tree索引

为什么选择B+Tree作为索引结构?

1、二叉树
(1)当顺序插入数据时会行形成一条链表,层级深效率低。
(2)每个节点只有两个子节点,当数据量大时,树的层数会变多。

2、红黑树
概念:左孩子节点比父节点小,右孩子节点比父节点大。
虽然解决了顺序插入的问题
但 当数据量大时,层级较深,检索效率低。
3、B-Tree(多路平衡查找树)
以度为 5的树为例,每个节点最多存放4个key,5个指针。
在这里插入图片描述
提示: 当节点中的key数量达到 度数时, 处于中间的key会向上分裂,两边的key会变成它的左右孩子节点,如果它还有父节点,则加入父节点中。

4、B+Tree
所有节点均会出现在叶子节点中且形成单链表(到MySQL中形成双向链表),父节点不存放数据, 只存放key。
在这里插入图片描述
每个节点是在一个页中,一个页默认16KB。
在这里插入图片描述

四、Hash索引

hash索引就是采用hash算法实现的hash表。

hash索引的特点:
(1) 只能用于对等计较(= 、 in), 不能用于范围查询。
(2)无法利用索引完成排序操作,(B+Tree可以利用按索引排序的序列直接返回不用再到内存排序)
(3)查询效率高,通常只需一次查询

在MySQL中, Hash索引支持的是Memory引擎, 而InnoDB有自适应hash功能,根据B+Tree索引在指定条件下自动创建。

五、适合创建索引的情况

(1)在数据量大、使用频繁、用以缩小查询范围的字段创建索引。
(2)在频繁使用、常作为where、order by、 group by 条件的列需要排序的字段上创建索引。
(3)对于长度过长的列可以创建前缀索引。
(4)尽量使用联合索引,单列索引虽然能查找到数据,但仅能返回一列数据,经常需要回表查询(如果不是主键列),且可以减少存储空间,使用联合索引通常可以覆盖索引。
(5)字段重复值多(区分度低),的列不适应创建索引。
(6)不适合创建过多的索引,索引也需要占空间,同时需要维护索引,影响更改效率。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:MySQL中的索引-创新互联
当前路径:http://jkwzsj.com/article/ceopoj.html

其他资讯