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.

Reply via email to