小编典典

MySQL 索引是如何工作的?

all

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

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


阅读 117

收藏
2022-03-18

共1个答案

小编典典

基本上,表上的索引就像书中的索引(这就是名称的来源):

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

当然,索引的用处取决于很多事情——举几个例子,使用上面的比喻:

  • 如果你有一本关于数据库的书并索引了“数据库”这个词,你会看到它在第 1-59,61-290 页和第 292 到 400 页上被提及。在这种情况下,索引没有多大帮助,它可能更快地逐页浏览(在数据库中,这是“选择性差”)。
  • 对于一本 10 页的书,创建索引是没有意义的,因为您最终可能会得到一本 10 页的书,并以 5 页的索引为前缀,这很愚蠢 - 只需扫描 10 页并完成它.
  • 索引也需要有用——通常没有必要索引例如每页字母“L”的频率。
2022-03-18