为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL索引如何工作?

MySQL索引如何工作?

一只甜甜圈 2019-08-14 17:00:54
MySQL索引如何工作?我对MySQL索引的工作方式非常感兴趣,更具体地说,他们如何在不扫描整个表的情况下返回所请求的数据?我知道,这是偏离主题的,但如果有人可以向我详细解释这一点,我会非常,非常感谢。
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

基本上,表上的索引就像书中的索引(名称来自的位置):

假设你有一本关于数据库的书,你想找一些关于存储的信息。没有索引(假设没有其他帮助,例如目录),您必须逐个浏览页面,直到找到主题(即a full table scan)。另一方面,索引有一个关键字列表,所以你可以参考索引,看看storage第113-120,231和354页上提到的那个。然后你可以直接翻到这些页面,而无需搜索(这是一个搜索索引,有点快)。

当然,索引的有用性取决于很多东西 - 一些例子,使用上面的明喻:

  • 如果您有一本关于数据库的书并将“数据库”这个词编入索引,您会看到它在1-59,61-290和292到400页中提到过。在这种情况下,索引没有多大帮助,它可能会更快地逐页浏览(在数据库中,这是“差的选择性”)。

  • 对于一本10页的书,制作一个索引是没有意义的,因为你可能最终得到一个10页的书,前面有一个5页的索引,这只是愚蠢的 - 只需扫描10页并完成它。

  • 索引也需要有用 - 通常没有必要索引例如每页字母“L”的频率。


查看完整回答
反对 回复 2019-08-14
?
不负相思意

TA贡献1777条经验 获得超10个赞

基本上,索引是按顺序排序的所有键的映射。按顺序列表,然后它可以执行以下操作,而不是检查每个键:

1:进入列表中间 - 是高还是低于我正在寻找的?

2:如果更高,则进入中间和底部之间的中间位置,如果是低位,中位和顶部

3:更高还是更低?再次跳到中间点等

使用该逻辑,您可以在大约7个步骤中找到排序列表中的元素,而不是检查每个项目。

显然有复杂性,但这给了你基本的想法。


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信