我有两个表 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 中的列数,但看起来更“复杂”
最佳答案
我会选择第一个。在第二个中,当您执行子查询时,TABLE_B
上的所有索引都将丢失。
列数对查询效率没有影响。这是行的数量。 MySQL 需要扫描的行数会减慢查询速度,而不是列数。
附注确保 TABLE_A.var1
和 TABLE_B.var1
上有索引。
关于MySQL 组合(内连接和选择)效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217656/