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

Seyko, buenas tardes :

Agradezco inmensamente sus valiosas recomendaciones, por lo cual ya estoy tratando de implementar sus aportes en relación al problema. Aunque ahora tengo mayor claridad, en la necesidad de encontrar nuevas formas de unir el resultado de las funciones sql que permiten visualizar los datos de las tablas, continuo con una duda, en relación, no ya con el tamaño de las tablas, sino con la estructura o tipo de dato con que se visualiza la salida Vs el rendimiento o velocidad con que se forman tales tipos. Para ello, he realizado unas pruebas a partir de 101.570 registros, bien lejos de lo inicialmente planteado que eran 1.5 millones de registros, obteniendose lo siguiente :
a. Se dispone de una función SQL, cuyo tipo de dato de salida es un SETOF, que devuelve 12 Columnas, la cual a su vez llama a dos funciones que crean vistas :
a.1. La función que crea la Vista1, con 12 columnas, requiere de 48.38 sec, para formar la vista que contiene 10.157 Registros y devuelve ademas un Integer que indica el total de registros. ¿ Está este tiempo de respuesta, dentro de lo que puede aceptarse como normal?
a.2. La funcion que crea la Vista2, con 6 columnas, que recibe como parametro de entrada un Id, producido por cada registro de la Vista1 y para cada Id, devuelve una vista de 10 registros ( de allí la cantidad total de Registros del Setof : 10x10.157=101.570 registros). Esta vista se genera en muy pocos ms.
El tiempo total para generar el setof es de 10.121 sec, es decir, el setof se forma a una velocidad aproximada de 600 Reg/min, rendimiento este que me parece muy pobre, por lo que agradezco me idiques tu opinión al respecto. Ahora bien, dado que ese SETOF debe ser convertido en un Refcursor , a ser abierto directamente desde el PgAdmin o desde el Web, se requerirá entonces un minuto adicional, es decir, que solo podría visualizarse 600 Reg/2 min o 300 Reg/min.
El procedimiento que he seguido, como se indica, utiliza vistas, y tu propuesta utiliza una tabla temporal, pero en conclusión, considero que producen los mismos resultados.
Si en tu opinión, los rendimientos indicados, estan dentro de los valores normales (pues ya no me quedan muchas opciones para optimizar el codigo), entonces definitivamente, la cantidad de registros que se encapsulan en el refcursor no debería exceder de 300, si se desea que el tiempo maximo de respuesta sea de un min.
Debo admitir que tienes toda la razón en cuanto a mi confusión con los indices, sin embargo, el problema subsiste aún en tablas en las que no se ha realizado ningun DELETE.
Gracias anticipadas por tu atención y bienvenidas las opiniones de los demás amigos del Foro.
Saludos.
amilano