Sql 提高查询性能的联接

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

我需要从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 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