谈谈MySQL索引是如何提高查询效率的 | 您所在的位置:网站首页 › 索引是提高数据库性能的重要方式 › 谈谈MySQL索引是如何提高查询效率的 |
文章已收录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 实验室设备网 版权所有 |