上下文:我正在构建一个FoundationDB,我正在考虑首先使用哪个键
假设我们有这组元素:
{AP,AQ,AR,BP,BQ,BR}
我们想从中构建一棵树。一种方法是先按第一个字符分组,然后按第二个字符分组,获取
root
+-----+------+
+ +
A B
+----+----+ +----+----+
| | | | | |
+ + + + + +
P Q R P Q R
另一种可能的方法是先按第二个字符分组,然后按第一个字符分组,获取:
root
+--------+--------+
+ + +
P Q R
+--+-+ +--+--+ +-+--+
+ + + + + +
A B A B A B
假设字符串的概率分布是均匀的,哪一个导致搜索时间最快?一般来说,最好是在顶层或树上或底部有很多分支?
答案 0 :(得分:0)
第一种解决方案将导致从2个选项中选择一个,然后从3个选项中选择一个,而第二个选择将首先选择三个中的一个,然后选择两个中的一个。理论上两者应该大致相同。
编辑:根据你的评论。如果您有两个层,其中选项的数量明显不同,如30和1000000,我建议您将30个选项放在较高级别,然后将1000000个选项放在较低级别。我相信在类似的情况下,缓存会加速更低级别。