左连接多列性能?

时间:2011-09-27 05:12:12

标签: mysql performance left-join

假设我有2个表:

table1 :(20.000 records)
id    code1    code2   something    status

table2: (7.500 records)
id    code1    code2    name

我想要的是使用此QUERY列出table1中的所有记录,其中包含table2中的“name”:

SELECT DISTINCT `tb1`.*, `tb2`.`name` FROM `table1` AS `tb1`
LEFT JOIN `table2` AS `tb2`
ON (tb1.code1 = tb2.code1 AND tb1.code2 = tb2.code2)
WHERE (tb1.status = 1)

但是我花了很长时间来检索数据(5分钟后我仍然无法看到结果)。

这样做的最佳方式是什么?

提前致谢..

1 个答案:

答案 0 :(得分:3)

请尝试使用列(code1,code2,status)在table1上添加索引。如果table1中没有太多列,则也可以将它们添加到索引中。在MS SQL中,我们有“包含列”,我们可以将其添加到索引中。也许mysql有类似的东西。

使用列(code1,code2,name)在table2上添加索引。

如果您关心索引大小,那么只需保留index1的(code1,code2,status)和index2的(code1,code2)。

希望这会有所帮助。