【问题标题】:How do indexes speed up searches? [duplicate]索引如何加快搜索速度? [复制]
【发布时间】:2014-01-14 09:42:41
【问题描述】:

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

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

索引涉及创建另一个单独的表,其中只有两列,即 id 和您想要索引的列。

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

【问题讨论】:

  • 你应该看看this answer,因为它很好地解释了数据库索引。
  • 索引不是表。

标签: database search indexing


【解决方案1】:

创建索引基本上是在磁盘上创建hash table 或在磁盘上search tree(通常是某种B Tree)。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多