I need to join 2 tables using a field 'cdi' from the 2nd table with cdi or cd_cliente from the 1st table. I mean that it might match the same field or cd_cliente from the 1st table.
My original query was
select 
    a.cd_cliente, a.cdi as cdi_cli,b.* 
from 
    clientes a 
left join 
    rightTable b on a.cdi = b.cdi or a.cd_cliente = b.cdi
But since it took too much time, I changed it to:
Select a.cd_cliente, a.cdi, b.* 
from clientes a
left join
    (select 
         a.cd_cliente, a.cdi as cdi_cli, b.* 
     from 
         clientes a 
     inner join 
         rightTable  b on a.cdi = b.cdi 
     union 
     select 
         a.cd_cliente, a.cdi as cdi_cli, b.* 
     from 
         clientes a 
     inner join 
         rightTable  b on a.cd_cliente = b.cdi) b
      on a.cd_cliente=b.cd_cliente
And it took less time. I'm not sure if the results would be the same. And if so, why the time taken by the 2nd query is considerably less?
 
     
     
    