Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/03/2008, 10:09
amilano
 
Fecha de Ingreso: noviembre-2007
Mensajes: 13
Antigüedad: 16 años, 5 meses
Puntos: 1
Re: Tablas Grandes : 2 Consultas

Seyko, buenos días :

El problema es que no abre el cursor (por tanto no lo lee), sin arrojar ningun tipo de error. Debo abortar la ejecución porque se queda en un loop que sobrepasa los 2 millones de ms. El problema no sucede cuando se desea presentar los datos para una cantidad menor de registros, caso este en que la respuesta es inmediata y con lo cual se descarta la posibilidad de que el loop se produzca por una incorrección en el Procedimiento de Almacenado.

Segun tu experiencia: ¿ cual es el tamaño optimo o maximo ( en Mb o Nro de Registros) que puede manejar entonces un Refcursor y con cual dimencionamiento de memoria ?. Agradezco tambien una sugerencia, en relación al punto (b) del mensaje inicial, relativo a que variables definidas como indices, se incrementan de manera aleatoria (no consecutivamente), cuando la Tabla excede de 1.5 Millones de Registros.
Un último Punto: tratando de optimizar un poco el codigo, he sustituido una parte del procedimiento de almacenado, por codigos que incluyen el uso de vistas para la extracción de datos, lo cual ha mejorado enormemente los tiempos de respuesta.Sin embargo, ello no sucede siempre, sino tambien de manera aleatoria, es decir, en muchos casos hago directamente el SELECT a la función que genera la vista, y tambien se queda en un LOOP para generarla, aun cuando la función que genera tal vista no utiliza elementos generadores de loop (FOR, WHILE, por ejemplo), es decir, la vista en unos casos se genera y en otros no. En todo caso la vista la estoy creando con las estructuras indicadas por el Manual :
'CREATE OR REPLACE VIEW vista_xxxxmmm AS
SELECT DISTINCT yy.columna1, yy.columna2, yy.columna3,zz.columna1,zz.columna2
FROM Tabla1 yy, Tabla 2 mm,Tabla3 yy,Tabla4 qq
WHERE (mm.columna1= ''' || K || ''') AND (mm.columna2=yy.columna4) AND qq.columna1=yy.columna1 AND qq.columna6=yy.columna2 ....etc.etc
ORDER BY yy.columna3 ASC';

Siendo la variable K, en el ejemplo, un dato o parametro de entrada a la vista. Pareciera que antes de llamar a esta vista, debe borrarse la anterior, lo cual no he encontrado como se hace, aunque tampoco estoy seguro que sea la causa del problema ( el problema de la vista, no el del refcursor, que es otra cosa)

Gracias anticipadas, por todo cuanto esté a su alcance y al alcance de los demás amigos del Foro.

saludos

amilano.