SQL中具有主键的两个联接表的大小

问题描述 投票:-1回答:2

我想知道是否将具有主键x的表与另一个表连接,可以告诉我们有关结果表大小的任何信息,例如,考虑以下查询:

SELECT r.*,s.* FROM r, s WHERE r.a = s.x;

rs是两个分别包含nm元组的任意表。如果我们将x作为s的主键,是否会改变我们对联接大小的看法?如果0a永远不相等,或者xn相同,则它总是在m之间变化。

sql database join primary-key
2个回答
0
投票

您的方案的结果联接的大小将在0到小于或等于sum(表r的大小+表s的大小)之间。各个表的大小通常是平均行长度*行数/元组数。


0
投票

这是您的查询:

a

如果xSELECT r.*, s.* FROM r JOIN s ON r.a = s.x; 中的主键,则永远不会重复。显然,查询可以返回零行。最大值是多少?

嗯,每个x是唯一的。 s中的每一行最多可以匹配x中的每一行。因此,上限为r中的行数。由于s不是r中的主键,因此可以重复。 a中的所有行都可以具有相同的值。

因此,返回的行数在0和r中的行数之间。

© www.soinside.com 2019 - 2024. All rights reserved.