Ver Mensaje Individual
  #1  
Antiguo 05-05-2008
tonyskl tonyskl is offline
Miembro
 
Registrado: oct 2007
Posts: 18
Reputación: 0
tonyskl Va por buen camino
Question 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!!!
Responder Con Cita