更好地加入查询性能

时间:2014-10-01 06:27:14

标签: sql oracle join

我需要从oracle中的多个表中选择一些日期。我有2个表,表A 表B ,它们应该相互连接。让我在表格中对此进行描述。

表A

A_id    x_id    y_id   z_id    price ....

表B

B_id    xyz_id    myValue

NOT: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;

但我不知道这会带来最佳表现。我征求你的意见。感谢。

1 个答案:

答案 0 :(得分:0)

这应该使用连接获取值。我想你会发现这对大型数据集的执行速度要快得多。

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