sql - 为什么图遍历比联接更快?有关SQL中标准化数据的任何类(class)?

标签 sql graph nosql

this开始,图形数据库执行多表联接的速度要快得多。其次,与连接等效的速度与表的大小无关。

depth   seconds records
2         0.016 ~2,500 --mysql
3        30.267 ~125,000
4     1,543.505 ~600,000

2         0.010 ~2,500 --neo4j
3         0.168 ~110,000
4         1.359 ~600,000


我知道SQL使用笛卡尔联接,字面上乘以表的大小和跳数。关于图数据库,我所听到的只是“一流的关系结构”。

什么数据结构+算法可以使图数据库快速遍历,而不管跃点和表的大小如何?

如何在RDBMS系统中实现它?我在想左联接和嵌套查询。

最佳答案

图遍历通常比联接更快,因为图中的每个节点都对其邻居进行计数并将其计数添加到结果中。可以使用多线程等轻松地对此进行优化。

我认为您无法在SQL中执行此操作,但是可以执行一些(递归)代码。这会导致很多查询,从而影响您的性能。

因此,如果您真的想使用图形数据,则应使用图形数据库。

关于sql - 为什么图遍历比联接更快?有关SQL中标准化数据的任何类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846131/

相关文章:

sql - 如何使 LAG() 忽略 SQL Server 中的 NULLS?

javascript - 使用与所有主要浏览器兼容的 javascript 创建条形图、折线图和饼图时使用什么?

mongodb - 使用基于文档的 nosql(mongodb、couchdb 和 riak 等)查询关系数据的性能

mysql - 连接两个表并将列值添加在一起

mysql - 按日期聚合日期范围内的数据,结果集中没有日期间隙

添加节点的效果未知时寻找最便宜路径的算法

sql - 保持独立数据库同步的策略

java - OutOfMemoryError 使用 FirebaseRecyclerViewAdapter

PHP 和 Mysql 无法使用 UNION 获取表名

c# - 给定一个网格中的位置,它是什么行和列