Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Full Outer Join (https://www.clubdelphi.com/foros/showthread.php?t=56018)

tonyskl 05-05-2008 15:53:30

Full Outer Join
 
Buenas a todos!!!

Tengo la siguiente sentencia SQL:

Código SQL [-]
select case when t.totalTituloComprado is null then l.codMercado else t.codMercado end as codMercado,
       case when t.totalTituloComprado is null then l.codCuenta  else t.codCuenta  end as codCuenta,
       case when t.desCortaValor is null then l.desCortaValor else t.desCortaValor end as desCortaValor,
       case when l.totalTituloComprado > t.totalTituloComprado or t.totalTituloComprado is null then l.totalTituloComprado else t.totalTituloComprado end as totalTituloComprado,
       case when l.totalTituloVendido  > t.totalTituloVendido  or t.totalTituloVendido  is null then l.totalTituloVendido  else t.totalTituloVendido  end as totalTituloVendido,
       case when t.totalTituloComprado is null then l.precioMedioCompraNeto when l.totalTituloComprado > t.totalTituloComprado then (t.precioMedioCompraNeto * t.totalTituloComprado + ((l.totalTituloComprado - t.totalTituloComprado) * l.precioMedioCompraNeto)) / l.totalTituloComprado else t.precioMedioCompraNeto end as precioMedioCompra,
       case when t.totalTituloComprado is null then l.precioMedioVentaNeto  when l.totalTituloVendido  > t.totalTituloVendido  then (t.precioMedioVentaNeto  * t.totalTituloVendido  + ((l.totalTituloVendido  - t.totalTituloVendido)  * l.precioMedioVentaNeto))  / l.totalTituloVendido  else t.precioMedioVentaNeto  end as precioMedioVenta
  from posicionAbiertaLocal l full outer join posicionAbiertaTotal t 
    on l.codMercado = t.codMercado 
   and l.codCuenta = t.codCuenta 
   and l.desCortaValor = t.desCortaValor

La cuestión es que necesito la información MEZCLADA de 2 tablas. Es decir:
- En la tabla A tenemos x Registros.
- En la tabla B tenemos y Registros.

La consulta nos tiene que devolver TODOS los registros (x e y - sin dejarse ninguno) y despues elegir que datos mostrar (en unos casos los de x en otros los de y)

Esta query funciona correctamente!!! Pero no es muy eficiente. Cuando tenemos unos 18 registros X y 19 registros en Y por ejemplo la consulta me tarda unos 2-3 segundos... (muy lenta)

Tengo indices en las columnas donde hacemos el full outer join.

¿Que podría mejorar en la query?

Saludos y Gracias!!!

tonyskl 06-05-2008 08:40:11

¿Alguien puede ayudarme? :(

poliburro 07-06-2008 02:25:01

Prueba con Full join, omite el outer


La franja horaria es GMT +2. Ahora son las 14:08:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi