Creo que este articulo te va a ayudar. https://dba.stackexchange.com/questions/232475/db2-how-to-call-a-stored-procedure-that-returns-a-result-set-in-another-user-d
Comentame luego... Saludos. El jue., 2 abr. 2020 a las 17:24, datil400 (<[email protected]>) escribió: > Los subselects son difíciles de eliminar porque calculan datos resumen de > varias tablas y el select final las une todas. > > Voy a explorar el explain, aunque no lo entiendo demasiado. > > Saludos y gracias > > El jue., 2 abr. 2020 21:54, Juan Carlos Paredes <[email protected]> > escribió: > >> Por eso te digo que evites las subselect. Trata de filtrar en la select >> final. >> >> Mira a ver qué te dice el Visual Explain. >> Otra opción es que arranques un monitor de rendimiento sobre el trabajo y >> revises las anotaciones. Una de las tareas más pesadas el la apertura y >> cierre de ODPs. >> >> Revisa qué está haciendo el motor de DB2 con eso. >> >> Obtener BlueMail para Android <http://www.bluemail.me/r?b=15824> >> En 2 abr. 2020, en 21:47, datil400 <[email protected]> escribió: >>> >>> Los índices ya están creados, incluso aquellos que aconseja el asesor. >>> >>> Desde mi punto de vista, son tantos los registros que hay que resumir en >>> cada subselect (todos?), que es lo que provoca la falta de rendimiento. >>> >>> Gracias Juan Carlos >>> >>> El jue., 2 abr. 2020 21:21, Juan Carlos Paredes <[email protected]> >>> escribió: >>> >>>> >>>> Si el valor inicial y final son el mismo en ambas tablas, yo crearía un >>>> índice por ese campo en ambas tablas y otro por la clave de la join. >>>> >>>> Y luego >>>> >>>> Select * from tabla1 join tabla2 on clave1 = clave2 where valor between >>>> valor_inicial and valor_final. >>>> >>>> Espero que ayude. >>>> Salud y paciencia >>>> #yomequedoencasa >>>> >>>> Juan Carlos. >>>> En 2 abr. 2020, en 20:57, datil400 <[email protected]> escribió: >>>>> >>>>> El tema de los índices está más que revisado, no mejoran el >>>>> rendimiento. >>>>> >>>>> Los subselects siempre revisan todos los registros. ¿Cómo lo sé? Una >>>>> consulta de un tramo pequeño está tardando entrr 30 y 45 minutos. Si >>>>> incorporo en los subselects el mismo filtro, tarda segundos. >>>>> >>>>> Me toca aprender cómo se puede transformar un procedimiento almacenado >>>>> en una vista. Si fuera posible, ¡claro! >>>>> >>>>> Gracias por tu aportación. >>>>> >>>>> El jue., 2 abr. 2020 18:31, Nicolas Silva <[email protected]> >>>>> escribió: >>>>> >>>>>> Hola Javier: >>>>>> >>>>>> Yo me inclinaria para un Stored Procedure debido a que en tu >>>>>> seleccion tienes parametros, en este caso fechas, y no puedes dejarlos >>>>>> predispuestos en la vista. >>>>>> Tambien, intentaria agregar un indice tipo EVI sobre las tablas para >>>>>> mejor seleccion de las fechas. >>>>>> >>>>>> Si el asesor de indices no te lo indica, puedes ejecutar el visual >>>>>> explain para ver mejor los indices a crear. >>>>>> >>>>>> Espero puedas resolverlo. >>>>>> >>>>>> Saludos !!!! >>>>>> >>>>>> >>>>>> El jue., 2 abr. 2020 a las 11:08, datil400 (<[email protected]>) >>>>>> escribió: >>>>>> >>>>>>> Hola a tod@s, >>>>>>> >>>>>>> no he sabido expresar de mejor manera la consulta que quiero haceros. >>>>>>> >>>>>>> Espero que todos vosotros, vuestros familiares y conocidos estéis >>>>>>> bien y viviendo el confinamiento de la mejor manera posible. >>>>>>> >>>>>>> Tengo una vista que resume información de varios archivos que >>>>>>> contienen millones de registros, no hable de uno o dos millones, hablo >>>>>>> de >>>>>>> 200 millones. Por muchos índices y consejos del asesor de índices no >>>>>>> consigo que se ejecute en un tiempo razonable. >>>>>>> >>>>>>> Antes de crear un archivo de acumulados o una tabla materializada >>>>>>> que me mantenga siempre calculados los datos quiero probar otras >>>>>>> alternativas (si las hay). >>>>>>> >>>>>>> En esos 200 millones de registros sólo quiero tratar un grupo >>>>>>> reducido, por ejemplo el último mes o el último año. Aunque en el select >>>>>>> sobre la vista siempre selecciono el rango que quiero, realmente lo >>>>>>> estoy >>>>>>> haciendo sobre el resultado de los cálculos que hace la vista, que >>>>>>> siempre >>>>>>> los hace sobre el total de los registros de las tablas. >>>>>>> >>>>>>> Además, son cálculos que se hacer por partes dentro de la cláusula >>>>>>> WITH. >>>>>>> >>>>>>> Lo que intento es que la vista sólo seleccione el grupo de registros >>>>>>> de cada una de las tablas. Un pequeño ejemplo: >>>>>>> >>>>>>> WITH >>>>>>> RESUMEN_TABLA1 >>>>>>> AS ( >>>>>>> SELECT * FROM TABLA1 WHERE campo BETWEEN <valor_inicial> AND >>>>>>> <valor_final> >>>>>>> ), >>>>>>> RESUMEN_TABLA2 >>>>>>> AS ( >>>>>>> SELECT * FROM TABLA2 WHERE campo BETWEEN <valor_inicial> AND >>>>>>> <valor_final> >>>>>>> ) >>>>>>> SELECT >>>>>>> * >>>>>>> FROM >>>>>>> TABLA >>>>>>> LEFT JOIN >>>>>>> RESUMEN_TABLA1 ON clave1 = clave >>>>>>> LEFT JOIN >>>>>>> RESUMEN_TABLA2 ON clave2 = clave >>>>>>> ; >>>>>>> >>>>>>> En la consulta de la vista >>>>>>> >>>>>>> SELECT >>>>>>> * >>>>>>> FROM >>>>>>> VISTA >>>>>>> WHERE >>>>>>> <valor_inicial> = '2020-01-01' AND <valor_final> = '2020-03-31' >>>>>>> >>>>>>> Realmente esto no se puede hacer en SQL pero simularlo. Se me >>>>>>> ocurren algunas soluciones: >>>>>>> >>>>>>> 1. Variables globales >>>>>>> >>>>>>> Cargar los valores de selección en variables globales que utilice la >>>>>>> vista internamente. Inconveniente, dos trabajos o usuarios distintos no >>>>>>> podrían hacer una consulta concurrente. >>>>>>> >>>>>>> 2. Procedimiento almacenado o UDTF >>>>>>> >>>>>>> Utilizar el paso de parámetros para seleccionar las filas de los >>>>>>> subselects, pero no sé cómo incoporarlas en una vista para que el >>>>>>> usuario >>>>>>> pueda utilizar un Query, ODBC, etc. sin tener que utilizar el >>>>>>> procedimiento >>>>>>> o UDTF. >>>>>>> >>>>>>> No sé si he sido capaz de explicarme (creo que no), pero ¿alguno >>>>>>> vosotros me puede dar alguna pista de cómo podria hacer lo que propongo? >>>>>>> >>>>>>> O simplemente estoy alucinando y es imposible hacerlo. >>>>>>> >>>>>>> Saludos a todos y gracias por vuestros comentarios. >>>>>>> >>>>>>> Javier >>>>>>> ____________________________________________________ >>>>>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>>>>>> Forum.Help400 © Publicaciones Help400, S.L. >>>>>> >>>>>> ____________________________________________________ >>>>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>>>>> Forum.Help400 © Publicaciones Help400, S.L. >>>>> >>>>> ------------------------------ >>>>> >>>>> �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>>>> Forum.Help400 � Publicaciones Help400, S.L. >>>>> >>>>> ____________________________________________________ >>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>>> Forum.Help400 © Publicaciones Help400, S.L. >>> >>> ------------------------------ >>> >>> �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>> Forum.Help400 � Publicaciones Help400, S.L. >>> >>> ____________________________________________________ >> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >> Forum.Help400 © Publicaciones Help400, S.L. > > ____________________________________________________ > Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) > Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________ �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones Help400, S.L.
