关于数据库:索引如何加速搜索?

How do indexes speed up searches?

本问题已经有最佳答案,请猛点这里访问。

索引如何帮助加快基于特定标准的数据搜索?

如果有一个表有6列,并且没有一列被索引,那么程序必须检查所有表行。

索引涉及到创建另一个只有两列的独立表,即ID和要索引的列。

我不明白的是,这是如何帮助应用程序进行更快的搜索的?它不读取整个6列表,但它仍然需要读取整个2列表,对吗?行数相同…


它的功能很像书中的索引。我们不会通过读取整个索引来找到我们想要的条目,一旦找到了条目,我们就不会继续为同一条目的其他实例读取索引。一旦我们找到条目,我们就不必阅读整本书,只要跳到我们想要的条目。这些操作是在正常的表查找中进行的,并且索引以书籍索引的方式为我们节省了很多时间。


创建索引基本上可以创建磁盘上的哈希表或磁盘上的搜索树(通常是某种B树)。

在有序搜索树中搜索精确匹配或最接近匹配时,搜索哈希表的精确匹配是O(1),而在有序搜索树中搜索精确匹配或最接近匹配是O(log(n))

这与扫描整个表(即O(n))形成对比。