索引和键

概念

MySQL 表中的索引就像书中的索引一样。

假设你有一本关于数据库的书,你想找一些关于存储的信息。没有索引(假设没有其他帮助,例如目录),你必须逐个浏览页面,直到找到主题(这是全表扫描)。另一方面,索引有一个关键字列表,所以你可以查阅索引,看看第 113-120,231 和 354 页上提到了存储。然后你可以直接翻到这些页面,而无需搜索(这是使用索引进行搜索,速度稍快一些)。

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

  • 如果你有一本关于数据库的书并将数据库这个词编入索引,你可能会看到它在第 1-59,61-290 和 292-400 页中提到过。这是很多页面,在这种情况下,索引没有多大帮助,逐个浏览页面可能会更快。 (在数据库中,这是选择性差。)
  • 对于一本 10 页的书,制作一个索引是没有意义的,因为你可能最终得到一个 10 页的书,前面有一个 5 页的索引,这只是愚蠢的 - 只需扫描 10 页并完成它。
  • 索引也需要有用 - 通常没有必要编制索引,例如,每页的字母 L 的频率。