mysql - 数据库查询是否比在一台服务器上查找 LinkedIn 类型二级连接的算法更快?

标签 mysql algorithm graph graph-theory graph-algorithm

我和 friend 有 table id, u1, u2关于< 500,000单个 mysql 服务器上的条目

我想参加userAuserB并检查他们是否有共同的 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/

相关文章:

algorithm - 最大限度地降低转型成本

graph - 嵌套映射到表示 Clojure 中的边的元组序列

linux - 我应该学习哪种语言?

mysql - 计数 n 天,跳过指定日期

mysql 查询优化

python - 这个幂集函数的时间复杂度是多少?

algorithm - Kruskal 最小生成树中的交叉点

python - 更新未在 mysql 服务器上提交flask-sqlalchemy

php - 在后台多次从 android 执行 .php 文件的最佳方法是什么?

algorithm - PID算法在巡线机器人中的实现