我有两个表A和B.这些表通过A.bid = B.id.链接。表A有19列,表B有10列。两张表都包含大约40,000条记录。SQL投影成本
我一直在寻找在以下3个简单的查询:
-- Query 1
SELECT Col1, Col2, Col3, Col4, Col5 FROM A, B
WHERE A.bid = B.id
-- Query 2
SELECT * FROM A
-- Query 3
SELECT Col1 FROM A
我发现有趣的是,查询2采用目前为止最长的运行,接着是查询1(加入)并以最快的被查询3(一个更严格的预测)。所有3个查询返回相同的行数。
是什么导致了这种行为?为什么投影中的列数对性能有如此大的影响?当然,我明白投影并不是免费的,但我不明白加入的方式(尽管投影更加有限)可以比简单的SELECT *
运行更快(速度更快)。
谢谢。
我想我估计额外的读取/网络流量的成本。我非常关注联盟中关键比较的成本,以致我看到了这些额外成本。谢谢。 –