开发者社区> 问答> 正文

MySQL索引如何工作?

我对MySQL索引的工作方式非常感兴趣,更具体地说,它们如何在不扫描整个表的情况下返回请求的数据?

我知道这是题外话,但是如果有人可以向我详细解释一下,我将非常非常感谢。

展开
收起
保持可爱mmm 2020-05-11 10:37:13 405 0
1 条回答
写回答
取消 提交回答
  • 基本上,表上的索引的作用类似于书中的索引(这就是名称的来源):

    假设您有一本关于数据库的书,并且想要查找有关存储的信息。没有索引(假设没有其他帮助,例如目录),则必须逐个浏览页面,直到找到主题(即full table scan)为止。另一方面,索引包含一个关键字列表,因此您可以查阅该索引,并storage在第113-120,231和354页中看到该索引。然后,您可以直接跳至这些页面,而无需进行搜索(即使用索引,速度更快)。

    当然,索引的有用程度取决于很多事情-使用上面的比喻的几个例子:

    如果您有一本关于数据库的书并为“数据库”一词建立了索引,您会发现它在第1-59,61-290页和第292至400页中提到。在这种情况下,索引并没有太大帮助,它可能更快地一页一页地浏览页面(在数据库中,这是“选择性差”)。 对于一本10页的书,建立索引是没有意义的,因为您可能最终得到一本10页的书,并以5页的索引为前缀,这很愚蠢-只需扫描10页并完成即可。 索引也需要有用-通常没有指向索引的位置,例如每页字母“ L”的频率。来源:stack overflow

    2020-05-11 10:37:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像