我和 friend 有 table id, u1,
u2
关于< 500,000
单个 mysql 服务器上的条目
我想参加userA
和 userB
并检查他们是否有共同的 friend 。
做起来是否更快
select u2 from friends where u1 = userA and u2 IN (select u2 from friends where u1 = userB)
而不是在图形上(在一台服务器上)运行最短路径算法?
像 LinkedIn 和 Facebook 这样的大型网络用来处理这个问题的标准方法是什么?
谢谢!
最佳答案
如果表 friends 同时被 u1 和 u2 索引,那么 SQL 查询就是取 2 个子集的交集并且非常快。这是因为索引已经完成。如果你在内存中进行计算,时间取决于你是否有预建索引:如果有,你会更快,因为没有数据库连接开销。如果索引包含在计算时间中,并且数据库已预热(内存中的所有数据),您可能会丢失。
我说的是索引,而不是最短路径算法,因为最短路径算法计算的数据比您需要的多。
关于mysql - 数据库查询是否比在一台服务器上查找 LinkedIn 类型二级连接的算法更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439917/