索引如何加速搜索?

时间:2013-12-26 19:04:03

标签: database search indexing

索引如何帮助加速根据特定条件搜索数据?

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

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

搜索哈希表中的完全匹配为O(1),而在有序搜索树中搜索完全匹配或最匹配的匹配为O(log(n))

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