谈谈MySQL索引是如何提高查询效率的 您所在的位置:网站首页 索引是提高数据库性能的重要方式 谈谈MySQL索引是如何提高查询效率的

谈谈MySQL索引是如何提高查询效率的

2023-07-04 19:57| 来源: 网络整理| 查看: 265

文章已收录Github精选,欢迎Star:github.com/yehongzhi/l…

前言

我们都知道当查询数据库变慢时,需要建索引去优化。但是只知道索引能优化显然是不够的,我们更应该知道索引的原理,因为不是加了索引就一定会提升性能。那么接下来就一起探索MYSQL索引的原理吧。

什么是索引

索引其实是一种能高效帮助MYSQL获取数据的数据结构,通常保存在磁盘文件中,好比一本书的目录,能加快数据库的查询速度。除此之外,索引是有序的,所以也能提高数据的排序效率。

通常MYSQL的索引包括聚簇索引,覆盖索引,复合索引,唯一索引,普通索引,通常底层是B+树的数据结构。

总结一下,索引的优势在于:

提高查询效率。 降低数据排序的成本。

缺点在于:

索引会占用磁盘空间。 索引会降低更新表的效率。因为在更新数据时,要额外维护索引文件。 索引的类型 聚簇索引

索引列的值必须是唯一的,并且不能为空,一个表只能有一个聚簇索引。

唯一索引

索引列的值是唯一的,值可以为空。

普通索引

没有什么限制,允许在定义索引的列中插入重复值和空值。

复合索引

也叫组合索引,用户可以在多个列上组合建立索引,遵循“最左匹配原则”,在条件允许的情况下使用复合索引可以替代多个单列索引的使用。

索引的数据结构

我们都知道索引的底层数据结构采用的是B+树,但是在讲B+树之前,要先知道B树,因为B+树是在B树上面进行改进优化的。

首先讲一下B树的特点:

B树的每个节点都存储了多个元素,每个内节点都有多个分支。 节点中元素包含键值和数据,节点中的键值从小到大排序。 父节点的数据不会出现在子节点中。 所有的叶子节点都在同一层,叶节点具有相同的深度。

在上面的B树中,假如我们要找值等于18的数据,查找路径就是磁盘块1->磁盘块3->磁盘块8。

过程如下:

第一次磁盘IO:首先加载磁盘块1到内存中,在内存中遍历比较,因为17



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有