我对MySQL索引的工作方式非常感兴趣,更具体地说,它们如何在不扫描整个表的情况下返回请求的数据?
我知道这是题外话,但是如果有人可以向我详细解释一下,我将非常非常感谢。
基本上,表上的索引的作用类似于书中的索引(这就是名称的来源):
假设您有一本关于数据库的书,并且想要查找有关存储的信息。没有索引(假设没有其他帮助,例如目录),则必须逐个浏览页面,直到找到主题(即full table scan)为止。另一方面,索引包含一个关键字列表,因此您可以查阅该索引,并storage在第113-120,231和354页中看到该索引。然后,您可以直接跳至这些页面,而无需进行搜索(即使用索引,速度更快)。
full table scan
storage
当然,索引的有用程度取决于很多事情-使用上面的比喻的几个例子: