Sql 将一个表连接到另一个表的最有效方法是为部分数据使用两个单独的连接条件
我有两个表(Sql 将一个表连接到另一个表的最有效方法是为部分数据使用两个单独的连接条件,sql,db2,Sql,Db2,我有两个表(Table1和Table2)要加入,但是,加入标准因Table1的Country列中的数据而异 对于Country列中值为“UK”的所有记录,我想加入JoinField1、JoinField2和JoinField3 对于Country列中所有值为“USA”的记录,我想加入JoinField2、JoinField3和JoinField4 目前,我只是使用不同的连接条件将表2两次连接到表1。但是,我希望避免这种情况,因为Table2有数亿行数据,并且我的查询在运行时遇到问题 有没有更有效
Table1
和Table2
)要加入,但是,加入标准因Table1
的Country
列中的数据而异
对于Country
列中值为“UK”的所有记录,我想加入JoinField1
、JoinField2
和JoinField3
对于Country
列中所有值为“USA”的记录,我想加入JoinField2
、JoinField3
和JoinField4
目前,我只是使用不同的连接条件将表2
两次连接到表1
。但是,我希望避免这种情况,因为Table2
有数亿行数据,并且我的查询在运行时遇到问题
有没有更有效的方法来进行此连接?
请注意,我使用的是DB2SQL,不能在查询中使用函数
您可以将其表示为:
select . . .
from table2 t2 join
table1 t1
on t2.country = t1.country and
t2.Joinfield2 = t1.Joinfield2 and
t2.Joinfield3 = t1.Joinfield3 and
( (t2.country = 'UK' and t2.Joinfield1 = t1.Joinfield1) or
(t2.country = 'USA' and t2.Joinfield4 = t1.Joinfield4)
);
我不确定这是否会提高性能,因为
或可能是性能杀手。但是上的索引(country、joinfield2、joinfield3、joinfield1、joinfield4)
会有所帮助。使您的数据模型正常化。我希望:)。在我工作的公司里不太可能。以前从未在联接中使用OR。我想我只需要做一个基本的性能测试,看看哪种方法效果更好。