索引如何帮助加速根据特定条件搜索数据?
如果有一个包含6列的表并且没有索引,则程序必须检查所有表行。
索引涉及创建另一个单独的表,其中只有两列,即要索引的id和列。
我不明白,这是如何帮助应用程序进行更快速的搜索?它不会读取整个6列表,但它仍然必须读取整个2列表,对吗?哪个行数相同...
答案 0 :(得分:7)
它的功能很像书中的索引。我们没有读取整个索引来查找我们想要的条目,一旦找到条目,我们就不会继续读取同一条目的其他实例的索引。一旦找到条目,我们就不必阅读整本书,只需跳转到我们想要的条目即可。这些操作在正常的表查找中,索引节省了我们的时间,就像书索引一样。
答案 1 :(得分:5)
创建索引基本上会创建磁盘上的hash table或磁盘上的search tree(通常是某种B Tree)。
搜索哈希表中的完全匹配为O(1)
,而在有序搜索树中搜索完全匹配或最匹配的匹配为O(log(n))
。
这与扫描整个表格O(n)
形成对比。