Subject | Full join and indices |
---|---|
Author | Kjell Rilbe |
Post date | 2017-01-23T12:05:15Z |
Hi,
I just needed to do a full outer join between two very simple tables G and N, each with a single-column PK of identical type char(12). I noticed that the plan produces was:
PLAN JOIN (N NATURAL, G NATURAL)
I stopped the query after ~5 minutes. Then I thought I can do this calculation in two steps, so I did a left outer join from G to N first, then a left outer join from N to G (equivalent to a right outer join from G to N). These queries were executed with these plans:
PLAN JOIN (G NATURAL, N INDEX (PK_N))
PLAN JOIN (N NATURAL, G INDEX (PK_G))
They both executed in less than half a minute each.
Now, I was wondering why the full outer join can't do a left join using the right table's PK and then a right join using the other table's PK. This is essentially what I did with the latter two queries.
The full join operation seems to do something that's a lot less efficient (whatever it is that it does).
I'm still on FB 2.5.2, so... has this been improved in 3.0?
Thanks,
Kjell
I just needed to do a full outer join between two very simple tables G and N, each with a single-column PK of identical type char(12). I noticed that the plan produces was:
PLAN JOIN (N NATURAL, G NATURAL)
I stopped the query after ~5 minutes. Then I thought I can do this calculation in two steps, so I did a left outer join from G to N first, then a left outer join from N to G (equivalent to a right outer join from G to N). These queries were executed with these plans:
PLAN JOIN (G NATURAL, N INDEX (PK_N))
PLAN JOIN (N NATURAL, G INDEX (PK_G))
They both executed in less than half a minute each.
Now, I was wondering why the full outer join can't do a left join using the right table's PK and then a right join using the other table's PK. This is essentially what I did with the latter two queries.
The full join operation seems to do something that's a lot less efficient (whatever it is that it does).
I'm still on FB 2.5.2, so... has this been improved in 3.0?
Thanks,
Kjell
--
Kjell Rilbe
Telefon: 08-761 06 55
Mobil: 0733-44 24 64
Marknadsinformation i Sverige AB
Ulvsundavägen 106C
168 67 Bromma
www.marknadsinformation.se
08-514 905 90