Interbase - full outer join

 
Vista:

full outer join

Publicado por Tonyskl (1 intervención) el 06/05/2008 09:25:23
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!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder