我有两个表 A 和 B。这些表通过 A.bid = B.id 链接。表 A 有 19 列,表 B 有 10 列。这两个表都包含大约 40,000 条记录。
我一直在查看以下 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 *
操作运行得更快(快得多)。
谢谢。