Oracle - Optimizar Update MUY URGENTE

 
Vista:

Optimizar Update MUY URGENTE

Publicado por Raquel (9 intervenciones) el 01/08/2002 11:03:08
En primer lugar gracias por prestarme atención:
Desde una forma, genero una tabla temporal que despues utilizo en un listado. Al generar la tabla tengo varios Insert y Update con datos de diversas tablas en función de los datos y filtros que definan los usuarios.
El problema surge cuando seleccionan un cuarto nivel de agrupamiento ya que el proceso se retarda sobre un cuarto de hora. Con una de las sentencias que más se retrasa, es con un update de un campo de la tabla temporal, en la que se actualiza un campo mediante una select de una tabla de unos 700.000 registros y que se une mediante distintos substr de un campo con distintos campos de la tabla temporal, que tiene unos 1500 registros, y me parece un poco excesivo el tiempo transcurrido. ¿Cómo puedo mejorar el rendimiento? (Ya he creado índices en la tabla temporal tambien, pero nada)

Muchas 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

RE:Optimizar Update MUY URGENTE

Publicado por Pedro (3 intervenciones) el 01/08/2002 11:13:39
No se como tienes montado ese procedimento pero quizas deberias ir descartando los registros que hayas actualizado de alguna manera virtual en el where de la select asi podrias coger los registros poco a poco,crea un script por ejmeplo y lanzalo con clausulas rownum de 5000 o 6000 registros como mucho.Y haz commit de vez en cuando.

Yo hice algo parecido para comparar por descripción dos tablas que no tenian ni indice una tenia 300000 registros y otra 57000 hacia update tambien en una de ellas y lo hice poco a poco y bueno el tiempo fue menor de 10 horas me tardo una solo xD.HAcia muchos (replace,substr,etc...) no se como lo tendras tu montado pero espero haberte dado una ligera idea.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias, Pero ...

Publicado por Raquel (9 intervenciones) el 01/08/2002 11:29:27
Muchas gracias Pedro, pero al ser una tabla temporal y con nombre variable, lo que hago es crear la instrucción como una cadena de caracteres y luego con Forms_Ddl le paso la instrucción al servidor. Dependiendo de los criterios seleccionados, se cargarán en la tabla temporal 100, 1000 o 50000 registros así que tampoco se me ocurre como podría controlarlo.

Muchas gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Optimizar

Publicado por Jorge (60 intervenciones) el 02/08/2002 20:34:56
Yo pienso que lo que tienes que optimizar es el o los select's que utilizas para el Update, Inicialmente trata de revisar cómo es que estructuras tu comando SQL al armar dinamicamente el Query, porque puede ser que con solo cambiar el orden de las tablas en el From, y ordenar las columnas en el Where para que se puedan utilizar los Indices el rendimiento de tu query mejore.

Hay que tomar en cuenta que si utilizas funciones del lado izquierdo de la comparación (substr's o cualquier otra) en el where, anulas los indices y ésto te puede provocar un full Scan en una tabla que teniendo 700,000 registros no va a ser nada rápido.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar