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.
