Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ventajas de Operador Outer Join vs (+)

Estas en el tema de Ventajas de Operador Outer Join vs (+) en el foro de Oracle en Foros del Web. Saludos, Me topado con la necesidad de mejorar el rendimiento de una consulta la cual realiza varios Join(5 o 6 tablas) los cuales no utlizan ...
  #1 (permalink)  
Antiguo 29/01/2013, 11:49
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Ventajas de Operador Outer Join vs (+)

Saludos,

Me topado con la necesidad de mejorar el rendimiento de una consulta la cual realiza varios Join(5 o 6 tablas) los cuales no utlizan la sintaxis de Inner Join sino mas bien como lo siguiente:

Código:
select t.campo, t2.campo
from table1,table2
where table1.id=table2.id(+)
Segun tengo entendido el operador (+) es similar a utilizar un Left Join o Rigth Join, he realizado la consulta utilizando la sintaxis Join y me trae el mismo resultado, pero el tiempo de la consulta ha aumentado, utilizando el operador (+) dura de 1 a 2 segundos, mientras usando la sintaxis Join esta dura hasta 20 segundos. Creo que se deba posiblemente al orden de las condiciones de la consulta.

Mi pregunta es si podria similar el tiempo de consulta utilizando la sintaxis Join para tener mejor legivilidad del codigo y cuales son las desventajas que podria tener en un futuro si utilizara el operador(+).
  #2 (permalink)  
Antiguo 29/01/2013, 12:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Ventajas de Operador Outer Join vs (+)

Las dos opciones tienen el mismo desempeño.
Simplemente hacen parte a estandares sql diferentes.

Si notas una diferencia en tiempos, esto puede presentarse ya que al ejecutar la primera consulta, estos registros se toman en disco y se suben al data buffer cache.
Por ende, la segunda consulta no tiene que ir a disco sino que toma los registros de la memoria.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 30/01/2013, 06:39
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Ventajas de Operador Outer Join vs (+)

Gracias por responder,

Es cierto, pero de todas maneras la consulta que utiliza la sintaxis Join es mas lenta con una cantidad de tiempo considerable, por lo cual creo que debe existir alguna diferencia al utilizar el (+) ya que de lo contrario al ejecutar la consulta con la sintaxis Join varias veces deberia tomar un tiempo parecesido que al utilizar el (+).


Saludos
  #4 (permalink)  
Antiguo 30/01/2013, 07:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Ventajas de Operador Outer Join vs (+)

Puedes comparar planes de ejecución de ambas consultas.
Aca probé una y me da el mismo plan de ejecución en una consulta interna que tengo.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 30/01/2013, 15:47
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Ventajas de Operador Outer Join vs (+)

Bueno, en mi caso se mueven millones de registros y ademas se utiliza varios dblinks para conectarse tablas que de db que estan en otros servidores. La cantidad de registros influye mucho. Pero segun lo que veo estoy considerando utilizar el operador (+) y tratar de mejorar la consulta lo mas que pueda, ya que esa es la cuestion, tengo que tratar de aumentar el tiempo de ejecucion de las consultas, pero al recrearla con los operadores Join los resultados han sido negativos.

Etiquetas: join, operador, outer, select, tabla, ventajas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:29.