我有两个大表,table_1
和table_2
。每个列都有id
,name
和number
列。我想在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;
两者都很慢。
我在两个表中添加了name
和number
的索引。还是很慢。然后我在两个表上添加了一个多列索引(name, number)
。还是很慢。
最后,我尝试在两个表中创建combined
列,并将其值设置为concat(name, number)
。我在combined
列的两个表中添加了索引,然后执行以下操作:
select t1.* from table_1 t1, table_2 t2
where t1.combined = t2.combined
超级快!
在没有创建combined
列的尴尬解决方法的情况下,是否有更优雅的方式来实现性能?