请选择 进入手机版 | 继续访问电脑版
查看: 85|回复: 0

[面试] 面试官:不知道索引有几种?劝你简历别写熟悉MySql

[复制链接]

[面试] 面试官:不知道索引有几种?劝你简历别写熟悉MySql[复制链接]

zygxsq 发表于 2020-6-27 03:40:29 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式 回复:  0 浏览:  85
索引的概念基本所有人都会遇到过,就算没有了解过数据库中的索引,在生活中也不可避免的接触到。比方说书籍的目录,字典的查询页,图书馆的科目检索等等。其实这些都是一种索引,并且所起到的作用大同小异。

而对于数据库而言,只不过是将索引的概念抽象出来,让建立索引的过程更为灵活而自由,从而可以在不同的场景下优化数据库的查询效率。

索引在数据库的实际应用场景中十分普遍,数据库的优化也离不开对索引的优化。同时,索引相关的知识也是面试高频的考点之一,是应试者理论结合现实最为直接的体现。

因此,本文将从基础理论出发,介绍 MySQL 按照逻辑角度的索引分类和实现,通过数据结构的实现原理阐述不同结构对建立索引带来的优劣势,同时针对物理存储的方式对索引的组织特点和应用场景进行分析。最后根据不同的应用场景尽可能的探究如何建立起高性能的索引。文章结构如下:


034029wmammgh3131f61jg.png
什么是索引
索引似乎并没有十分明确的定义,更多的是一种定性的描述。简单来讲,索引就是一种将数据库中的记录按照特殊形式存储的数据结构。通过索引,能够显著地提高数据查询的效率,从而提升服务器的性能。

专业一点来说呢,索引是一个排好序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据库十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。

说起索引,其实并不是 MySQL 数据库特有的机制,在关系型数据库中都会有类似不同的实现。这里我们也只是讨论 MySQL 数据库中的索引实现。

事实上,说是 MySQL 的索引其实并不准确。因为在 MySQL 中,索引是在存储引擎层而不是服务器层实现的。这意味着我们所讨论的索引准确来说是 InnoDB 引擎或 MyISAM 引擎或其它存储引擎所实现的。

所以索引即便是在 MySQL 中也没有统一的标准,不同存储引擎的所实现的索引工作方式也并不一样。不是所有的存储引擎都支持相同类型的索引,即便是多个引擎支持同一种类型的索引,其底层的实现也可能不同。

更多详细内容请戳链接查看:https://mp.weixin.qq.com/s/I02vl5AFxrgMGmTa3SQ3ew
来自安卓客户端来自安卓客户端
回复

使用道具 举报

QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1
QQ