假设我有2张桌子:
table1 :(20.000 records)
id code1 code2 something status
table2: (7.500 records)
id code1 code2 name
我想要的是通过使用此QUERY列出table1中的所有记录以及table2中的“名称”:
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分钟后我仍然看不到结果).
做这个的最好方式是什么?
提前致谢..
解决方法:
请尝试使用column(code1,code2,status)在table1上添加索引.如果表1中的列过多,也可以将它们添加到索引中.在MS SQL中,我们具有“包含列”,可以将其添加到索引中.也许mysql有类似的东西.
使用列(code1,code2,name)在table2上添加索引.
如果您担心索引大小,则只需为index1保留(code1,code2,status),并为index2保留(code1,code2).
希望这可以帮助.