在我尝试构建的应用程序中,将有用户(存储在用户表中),并且用户可以彼此“连接”(例如在Facebook上成为朋友)。我想要做的是构建用于存储这些连接的数据结构。该数据将主要用于为用户呈现“连接”(例如Facebook上的朋友)表。到目前为止,我已经遇到了两种不同的方法:
[第1行= John-Kyle]
[第2行=凯尔 - 鲍勃]
[第3行= Lilli-John]
等....)。
我的问题是 - 哪一个会更有效(主要是在查询时间方面,但在大小方面)。我猜第二个的尺寸要小得多,但是需要花费更多的时间来查询...你怎么看?哪一个更好用?如果你有任何想法更广泛地使用哪种模式(特别是Facebook,Instagram等热门网站),这也会有很大的帮助!
答案 0 :(得分:1)
除了第一种方法外,有很好的理由不在表现之外,但是这种方法不太可能获得性能:
所以你有一个 搜索表+小索引搜索 与 只搜索一个大索引 。搜索表不太可能比大型B-Tree下降的“上半部分”快,并且许多单独的表可能导致大量“松弛”(即未完全填充的页面),从而降低了缓存效率。由于这两个原因,(2)可能会更快。
答案 1 :(得分:0)
一个包含所有连接的表。每行具有用户a,用户b,连接类型。其中连接类型是对列出连接类型的另一个表的引用。添加适当的索引。