我有两张桌子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)
OR
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中的列数,但似乎更“复杂”
答案 0 :(得分:2)
我会选择第一个。在第二个中,当您执行子查询时,TABLE_B
上的任何索引都将丢失。
列数对查询的效率没有影响。这是行的数量。 MySQL需要扫描的行数会降低查询速度,而不会降低列数。
P.S。确保TABLE_A.var1
和TABLE_B.var1
上有索引。
答案 1 :(得分:0)
我宁愿使用第一个。实际上不需要使用子查询,因为它内部有任何聚合函数或操作。