16 逆向索引:缩小搜索范围(第3/3页)

在知道交易编号的情况下,这种排序可以让我们很快找到交易记录,但它并不能帮助我们找到与某个特定商人进行的所有交易。当然,我们可以按照商人的名字重新排序。但这样做的工作量很大,因为这意味着我们需要重新做一本账本。

我们可以建立一个额外的数据结构:一个以商人名字作为关键词的逆向索引。对于每一个商人,我们可以在索引中存下所有相关交易的编号。因为我们已经可以从编号很容易地找到交易记录,所以这个额外的索引就可以让我们很容易地找到与某个特定商人相关的所有交易记录了。

逆向索引是一个很典型的需要在运行时间和内存占用两者之间取舍的例子。添加一个逆向索引会占掉更多的内存,但它也让我们在一个新的维度上进行搜索的效率得到了极大提升。