好的,这只是理论上的,所以如果一个公正的数据库爱好者发表意见,那就太好了。
为了争论,让我们同意对于查询有“基表”这样的概念,其中一个表驱动结果集的大部分信息。想象一个查询,其中存在三个关系 - TableA、TableB 和 TableC
假设 TableA 有 100 万条记录,TableC 有 500 条记录,TableC 有 10,000 条记录。
假设查询是这样的 -
SELECT A.Col1
, A.Col2
, A.Col3
, A.Col4
, A.Col5
FROM TableA A
LEFT JOIN TableB B ON B.ID = A.TableBID
LEFT JOIN TableC C ON C.ID = A.TableCID
好的,显然TableA 是上面的基本关系。它是最大的表,它通过“从”连接来驱动结果集,从视觉上看,列甚至在结果集的“左侧”。(左边的东西实际上是我同事的标准)。
现在,假设 TableA 再次有 100 万行,TableB 是“连接”或“桥”表,有 500,000 行,TableC 有 1,000,000 行。因此,假设查询只是一个外连接,用于获取 TableA 和 TableC 中存在如下关系的所有列......
SELECT A.*
, C.*
FROM TableC C
FULL OUTER JOIN TableB B ON C.ID = B.TableAID
FULL OUTER JOIN TableA A ON A.ID = B.TableCID
好的,鉴于最后一个查询,谁能告诉我“基本关系”是什么?我不认为有一个,但希望另一个数据库人的意见。