擅长:python、mysql、java
<p>在计算机编程的艺术中,Vokume 3 Knuth有一个关于辅助键查找的部分。就您的问题而言,可以将该值视为次要密钥。</p>
<p>第一个建议是做你已经做过的事情:按值为键建立一个有效的索引。</p>
<p>第二个建议是设置一个大型btree,它是聚集数据的复合索引,其中分支节点包含值,叶子包含键数据和指向较大记录(如果有)的指针</p>
<p>如果数据是几何的(就像你看起来的那样),就有所谓的邮局树。它可以回答一些问题,比如,到x点最近的对象是什么。这里有几个例子:<a href="http://simsearch.yury.name/russir/01nncourse-hand.pdf" rel="nofollow noreferrer">http://simsearch.yury.name/russir/01nncourse-hand.pdf</a>这种查询的另一个简单选项是四叉树和k-d树。<a href="http://en.wikipedia.org/wiki/Quadtree" rel="nofollow noreferrer">http://en.wikipedia.org/wiki/Quadtree</a></p>
<p>另一个最后的选择是组合散列,将键和值组合成一种特殊的散列,这样即使没有这两个值,也可以对散列进行有效的查找。我在网上找不到一个好的组合散列解释,但它在TAoCP第3卷第573页第二版。</p>
<p>当然,对于其中的一些,您可能需要编写自己的代码。但如果内存或性能真的很关键,您可能需要花点时间。</p>