索引如何加快搜索速度? [复制]

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

你应该看看this answer,因为它很好地解释了数据库索引。 索引不是表。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于索引如何加快搜索速度? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

具有 10+ 百万行的 MySQL 表 - 如何使用索引加快搜索速度?

MySQL 从属复制 - 从属在主控之后 - 如何加快速度?

数据库的索引类型及实现方式

如何加快phpstorm更新git索引的速度

如何将弹性搜索索引或日志从一个弹性搜索服务器复制到另一台?

Elasticsearch:ES 倒排索引为啥查询速度会这么快