MySQL

时间:2016-05-20 06:31:16

标签: mysql

我有两个大表,table_1table_2。每个列都有idnamenumber列。我想在table_1中找到table_2中具有匹配名称和数字的记录:

select t1.* from table_1 t1, table_2 t2 
where t1.name = t2.name and t1.number = t2.number;

或使用连接语法:

select t1.* from table_1 join table_2 on
t1.name = t2.name and t1.number = t2.number;

两者都很慢。

我在两个表中添加了namenumber的索引。还是很慢。然后我在两个表上添加了一个多列索引(name, number)。还是很慢。

最后,我尝试在两个表中创建combined列,并将其值设置为concat(name, number)。我在combined列的两个表中添加了索引,然后执行以下操作:

select t1.* from table_1 t1, table_2 t2
where t1.combined = t2.combined

超级快!

在没有创建combined列的尴尬解决方法的情况下,是否有更优雅的方式来实现性能?

0 个答案:

没有答案