por que no miras "Tablas Particionadas", nosotros tenemos una base de
3.200.000.000 de registros y las tenemos separadas por periodo del asiento
(AAAMM) y la verdad es que andan muy rapido, al margen que a la hora de
depurar dichas tablas, tambien es rapido


Saludos





[image: Mailtrack]
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&;>
Remitente
notificado con
Mailtrack
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&;>
08/04/20
18:52:24

El mié., 8 abr. 2020 a las 17:06, datil400 (<[email protected]>) escribió:

> Hola Jesús,
>
> He de reconocer que nunca he tenido el tiempo suficiente para ponerme al
> día en temas como asesor de índices o de rendimiento de la BBDD, a parte de
> que se ma hace cuesta arriba.
>
> Gracias por tus comentarios.
>
> El vie., 3 abr. 2020 9:44, Jesus Maria Arzak (DHL ES) <
> [email protected]> escribió:
>
>> Buen Dia
>>
>>
>>
>> Una cosa muy importante que has de tener en cuenta a la hora de utilizar
>> el Sql es que cuando utilices un índice tengas en el Where los campos del
>> índice, no hace falta que tengas todos  pero los que estén sean del índice.
>>
>>
>>
>> Además es muy muy importante que los pongas ordenados según el orden del
>> índice.
>>
>>
>>
>> En el momento que aparecen desordenados o tienes un campo de selección
>> que no está en el índice el rendimiento baja espectacularmente.
>>
>>
>>
>> Quizá ya lo sepas pero no lo he visto mencionado .
>>
>>
>>
>> Un saludo
>>
>>
>>
>>
>>
>> *Jesús Mª Arzak Capilla*
>>
>> Solutions Management
>>
>> *DHL Parcel Iberia, S.L.U.*
>>
>> Paseo Mikeletegi, nº 65
>> Parque Tecnológico de San Sebastián
>> E-20009 San Sebastián
>>
>> Phone: +34 943 37 81 37
>>
>>
>> * [email protected] <%[email protected]>*
>>
>> www.dhlparcel.es
>>
>> *GO**GREEN – Environmental protection with DHL*
>> *Por favor, ten en cuenta el medio ambiente antes de imprimir este correo*
>>
>>
>>
>>
>>
>>
>>
>> *From:* Forum.help400 [mailto:[email protected]]
>> *On Behalf Of *Juan Carlos Paredes
>> *Sent:* jueves, 2 de abril de 2020 21:55
>> *To:* forum.help400 <[email protected]>
>> *Subject:* Re: Cómo optimizar la consulta a una vista SQL
>>
>>
>>
>> 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.
>>
>> CONFIDENTIALITY NOTICE: This message is from DHL and may contain
>> confidential business information. It is intended solely for the use of the
>> individual to whom it is addressed. If you are not the intended recipient
>> please contact the sender and delete this message and any attachment from
>> your system. Unauthorized publication, use, dissemination, forwarding,
>> printing or copying of this E-Mail and its attachments is strictly
>> prohibited.
>> ____________________________________________________
>> Ú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