在传统的RDBMS中, 为什么多对多加入比多对一加入更多的资源消耗? 毕竟,不是多对多的关系就像两个多对一关系一样吗?
我观察到多对多查询在表中使用3-4千兆字节RAM的主流计算机慢慢超过大约10到1千5百万行。 在查询多对一关系时,我观察到即使有50百万行也没有减速。
答案 0 :(得分:0)
在传统的RDBMS中,为什么多对多连接比多对一连接更耗费资源?
当列列表的子行值也出现在FOREIGN KEY
(超级键)的其他位置时,SQL UNIQUE NOT NULL
(FK)约束成立。因此,对于引用表中的每一行,引用的表中只能有一个匹配的行。因此FK&的JOIN
ON
相等的结果它的超级键可以在FK表中每行输出最多一行。而通常,因为JOIN
返回可以从满足ON
条件的输入行生成的每个可能的行组合,通常可以输出更多行。
毕竟,不是多对多的关系,就像两个多对一的关系一样?
不清楚你的意思和#34;就像"或者你认为它如何表明或证明任何事情。加入不是一种关系。 (表格代表一种关系。)
- 如何根据预期性能预测内存和CPU要求? (有任何基准可用吗?)
许多SQL DBMS都有一个查询计划器/优化器EXPLAIN
命令&其他人可以询问查询将会做什么或做什么或花费多少。
阅读(逻辑和物理)关系查询优化/实现,一般来说&在任何特定的DBMS中。维基百科恰好有a decent article。许多教科书都在线。
- 过去哪个阈值值得使用其他解决方案? (MPP或NoSQL)
RDBMS提供通用的直接查询,具有某些计算复杂性和优点。优化机会。相对而言,其他系统是专门的,某些方面的改进是以牺牲他人为代价的。