Demasiado tiempo de respuesta de una consulta PB 9

Mi problemática es la siguiente:
Tengo un datawindow de tipo grid, el cual genere mediante un "select".
Lo que sucede es que al ejecutarlo, se tarda muchísimo, de echo hasta como se bloquea y ya después de un buen rato reacciona.
Le he ingresado parámetros con la finalidad de que no se obtengan muchos registros (pensando que era por la cantidad de registros, solo son 14). Lo más extraño es que si desde Power Builder lo ejecutó (por medio de la opción "retrieve") se ejecuta de manera normal (rápido), al igual que desde el manejador de BD y con parámetros que arrojan más de 200 registros.
Espero me puedas ayudar, realmente me urge.
Recibe saludos..!!chrome://dictionarytip/skin/book.png
chrome://dictionarytip/skin/book.png

1 Respuesta

Respuesta
1
Hombre seria bueno que me pases tu Select. Pero si me dices que te sale rapido desde cualquier otro lado menos del PB ejecutándose.
Entonces cabe la posibilidad de que tu DW le ayas activado sin querer la opción Row To Disk, Verifícalo de la siguiente manera
Rows/Retrieve Options/Row To Disk
Revisa que estea desactivado, porque si lo esta, te ara lenta la recuperación.
O quizá también sea lo otro que te estas bloqueando tu mismo. Bueno empesmos por algo no.
1- Revisa el Row To Disk
2 - Enviame tu select
Cualquier cosa me avisas
Gracias por contestar experto.
Ya revisé lo que me comentaste y no, no estaba activa esta opción (de echo jugué activando y desactivando las opciones de rows as needed y rows to disk) y se comporta de la misma manera(lento.. bloquea el proceso y ya después de mucho responde), le he dejado las 2 desactivadas.
A continuación te comparto mi select:
SELECT muestra.mue_fec_sol,
              muestra.cli_id,
              producto.pro_nom,
              ensaye.elem_id,
             algo_tags.algo_tag_oids,
             muestra.mue_turno,
             ensaye.ens_valor
FROM algo_tags,
           ensaye,
           muestra,
           producto
WHERE ( muestra.mue_id = ensaye.mue_id ) and
             ( muestra.pro_id = producto.pro_id ) and
             ( algo_tags.algo_tag_prod = producto.pro_id ) and
             ( algo_tags.algo_tag_cli = muestra.cli_id ) and
             ( algo_tags.algo_tag_elem = ensaye.elem_id ) and
             ( muestra.mue_st = 4 ) AND
             ( muestra.mue_fec_sol >= :fec_ini ) AND
             ( muestra.mue_fec_sol <= :fec_fin ) AND
             ( muestra.cli_id in ( SELECT DISTINCT algo_tags.algo_tag_cli FROM algo_tags )) AND
             ( muestra.mue_turno <> null ) AND
             ( ensaye.elem_id in ( SELECT DISTINCT algo_tags.algo_tag_elem FROM algo_tags )) AND
             ( ensaye.ens_valor <> 0 )
ORDER BY muestra.mue_fec_sol ASC,
                   Muestra. cli_id ASC,
                   Producto. pro_nom ASC,
                   algo_tags.algo_tag_oids ASC,
                   Muestra. mue_turno ASC

Considero importante mencionar que en los subqueries ya intenté poniendo datos fijos (resultados de los subqueries, pensando que estos lo alentaban), mandando los parámetros fijos y no. He intentado varias alternativas, pero ninguna funciona.
Lo que también me intriga es que si a ese datoawindow le asoció otro dataObject con una sentencia sencilla, la ejecuta normal.
Espero tu respuesta, GRACIAS..!
Wouuuuu definitvamete no soy amante la subconsultas, las uso cuando no me queda de otra eso hace demasiado lento el proceso, cuando hay mucha data que evaluar, no me refiero que recuperar, porque de echo te puede recuperar un solo registro pero tienes 10000 po lo que demorara buscando ese registro entre todos ellos.
No unas las claves de las tablas después del WHERE, de echo el PB lo hace automáticamente pero aprende a usar los JOIN, deberiass de buscar primero por los indices de la tabla, antes de cualquier otro campo.
Evita al máximo usar el distinct más aun si lo tendrás dentro de una subconsulta. Si te has visto obligado en usar muchas veces eso, pues quiere decir que tus tablas no están tan bien implementadas.
¿Me dices que si eso lo ejecutas directamente en tu moto de Base de datos te muestra rápidamente?
Si, lo muestra sin problemas.
De hecho como te comenté, ya hice pruebas poniendo en vez de las subconsultas datos fijos (lo que debe de traer la subconsulta), y no mejora.
Estoy de acuerdo con lo que mencionas sobre las subconsultas, pero para este caso no me queda ptra opción ya que se ejecutara apuntando hacia diferentes bases de datos, y la información es variable.
chrome://dictionarytip/skin/book.png
Si esa misma consulta lo ejecuta tu motor sin problema, quizás se te daño la llave del DW en el regedit, pero eso pasaría con todos tus DW que recuperen Data, pero si solo pasa con ese DW ahí una posibilidad de que lo estas bloqueando, osea tu select puede estar bien, pero el detalle es como le hagas el retrieve quizá antes del retrieve estas usando una de las tablas de las que usas en esta sentencia.
revisa tu codigo antes del retrieve, colocale un antes un sqlca.autocimmit=true
y un commit using sqlca;
Y aver me avisas com ote va, tienes que aprendar a usar muy bien los ROLLBACK y los COmmit, para que no te generes bloqueos
Mira así es como lo estoy ejecutando:
sqlca.autocommit = true;
li_rows = dw_repmtas.Retrieve(ldt_fecha_ini,ldt_fecha_fin)
sqlca.autocommit = false;

Considero importante mencionarte que he hecho pruebas generando el datawindow por medio de un store procedure y jala sin mayor problema; solo que considero que es como "querer matar moscas a cañonazos".
Hasta ahí todo bien, no hay bloqueos, ¿sabes por qué?
Porque cuando te bloqueas no recuperara nunca, a menos que mates la conexión que te esta bloquenaod, pero como dices que esperas y espera y esperas y en un momento sale, eso me indica que no hay bloqueos si no no te saldría nada.
¿Ahora no me respondiste si eso te pasa solo con esa consulta? Quizá te salen con todas y a mio me paso algo similar, pero lo que me paso a mi es que se malogro la llave del regedit de mi DW, lo que ise fue desinstalar y volver a instalar y solucionado.
Si ese es tu caso que te sale con todos, la lentitud, desinstala e intala y prueba

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas