我有两个表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中的列数,但看起来更“复杂”
发布于 2013-04-25 22:40:54
我会选择第一个。在第二个索引中,当您执行子查询时,TABLE_B上的所有索引都将丢失。
列数对查询的效率没有影响。这是行数的问题。降低查询速度的是MySQL需要扫描的行数,而不是列数。
附注:确保在TABLE_A.var1和TABLE_B.var1上有索引。
发布于 2013-04-25 22:39:41
我宁愿使用第一个。实际上,不需要使用子查询,因为您在其中确实有任何聚合函数或操作。
https://stackoverflow.com/questions/16217656
复制相似问题