索引如何加快搜索速度? [复制]
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 表 - 如何使用索引加快搜索速度?