Sql 提高查询性能的联接
我需要从oracle中的多个表中选择一些日期。我有两个表,表A和表B应该相互连接。让我在表格中描述一下 表A 表B 不:x_id、y_id和z_id与表B.xyz_id保持相同的值 我的查询应该会返回Sql 提高查询性能的联接,sql,oracle,join,Sql,Oracle,Join,我需要从oracle中的多个表中选择一些日期。我有两个表,表A和表B应该相互连接。让我在表格中描述一下 表A 表B 不:x_id、y_id和z_id与表B.xyz_id保持相同的值 我的查询应该会返回 A_id, x_id, y_id, z_id, myValue for x_id, myValue for y_id, myValue for z_id 我会像这样处理这个问题 select A_id, (select myValue as valueForX_id
A_id, x_id, y_id, z_id, myValue for x_id, myValue for y_id, myValue for z_id
我会像这样处理这个问题
select
A_id,
(select myValue as valueForX_id from TableB where xyz_id = x_id)
(select myValue as valueForY_id from TableB where xyz_id = y_id)..,
from TableA;
但我不知道这会有最好的表现。我征求你的意见。谢谢。这应该使用联接获取值。我想您会发现,对于大型数据集,这种方法的执行速度要快得多
select a.A_id, a.x_id, a.y_id, a.z_id, x.myValue as x_value,yb.myValue as y_value, z.myValue as z_value
from TableA a
join TableB x on x.xyz_id = a.x_id
join TableB y on y.xyz_id = a.y_id
join TableB z on z.xyz_id = a.z_id
select
A_id,
(select myValue as valueForX_id from TableB where xyz_id = x_id)
(select myValue as valueForY_id from TableB where xyz_id = y_id)..,
from TableA;
select a.A_id, a.x_id, a.y_id, a.z_id, x.myValue as x_value,yb.myValue as y_value, z.myValue as z_value
from TableA a
join TableB x on x.xyz_id = a.x_id
join TableB y on y.xyz_id = a.y_id
join TableB z on z.xyz_id = a.z_id