0

我有两个表 A 和 B。我需要表 A 中的两列(var1 和 var2),而表 B 中只有一列(var3)。这样做是否更有效率

SELECT var1, var2, var3 FROM TABLE_A a
INNER JOIN TABLE_B b ON (a.var1 = b.var1)

或者

SELECT var1, var2 FROM TABLE_A a
INNER JOIN (SELECT var1, var3 FROM TABLE_B b) b_min ON (a.var1 = b_min.var1)

第二个在加入之前减少了表 B 中的列数,但看起来更“复杂”

4

2 回答 2

2

我会选择第一个。在第二个中,TABLE_B当您执行子查询时,任何索引都将丢失。

列数对查询的效率没有影响。这是数。MySQL 需要扫描的行数是降低查询速度的原因,而不是列数。

TABLE_A.var1PS 确保和上有索引TABLE_B.var1

于 2013-04-25T14:40:53.860 回答
0

我宁愿使用第一个。实际上没有必要使用子查询,因为您在其中确实有任何聚合函数或操作。

于 2013-04-25T14:39:41.477 回答