Partición Oracle
Publicado por Doom (1 intervención) el 05/09/2018 01:31:56
Buenas Tardes a Todos.
Espero me puedan apoyar a encontrara la mejor solución al siguiente problema.
Dentro de un proyecto manejamos diversas tablas una de ellas almacena aproximadamente de 4 a 8 millones de registros y debido al uso frecuente del sistema nos piden que cualquier query ejecutado hacia esa tabla no debe sobrepasar el segundo de ejecución.
Actualmente diversos queries sobrepasa ese umbral por lo que varias personas me han recomendado hacer una petición a la tabla.
La tabla cuenta con 20 columnas,:
Ejemplo:
id_sucursal
codigo_gerente
codigo_cliente
codigo_tipo_cliente
status_contacto
id_producto
desc_producto
fh_compra
fh_pago
fh_alert
4 de ellas fueron tomadas para un UNIQUE INDEX,
ejemplo:
id_sucursal
codigo_gerente
codigo_cliente
codigo_tipo_cliente
uno de los queries están estructurados de la siguiente forma
SELECT * FROM T WHERE id_sucursal = ? AND (fh_alert BETWEEN TO_DATE(?, 'YYYY-MM-DD') AND TO_DATE(?, 'YYYY-MM-DD')) ORDER BY status_contacto, codigo_tipo_cliente, fh_alert, codigo_cliente;
El query mostrado al parecer genera un alto consumo por el uso del between aprox de 4.5s, sin el between reduce a menos de 1s, por ello nos recomendaron el particionamiento por la columna fh_alert, pero sin embargo la fecha de esta columna es la misma para todos lo registros de la tabla.
Espero y me puedan dar sugerencias sobre cómo reducir el tiempo.
Saludos !
Espero me puedan apoyar a encontrara la mejor solución al siguiente problema.
Dentro de un proyecto manejamos diversas tablas una de ellas almacena aproximadamente de 4 a 8 millones de registros y debido al uso frecuente del sistema nos piden que cualquier query ejecutado hacia esa tabla no debe sobrepasar el segundo de ejecución.
Actualmente diversos queries sobrepasa ese umbral por lo que varias personas me han recomendado hacer una petición a la tabla.
La tabla cuenta con 20 columnas,:
Ejemplo:
id_sucursal
codigo_gerente
codigo_cliente
codigo_tipo_cliente
status_contacto
id_producto
desc_producto
fh_compra
fh_pago
fh_alert
4 de ellas fueron tomadas para un UNIQUE INDEX,
ejemplo:
id_sucursal
codigo_gerente
codigo_cliente
codigo_tipo_cliente
uno de los queries están estructurados de la siguiente forma
SELECT * FROM T WHERE id_sucursal = ? AND (fh_alert BETWEEN TO_DATE(?, 'YYYY-MM-DD') AND TO_DATE(?, 'YYYY-MM-DD')) ORDER BY status_contacto, codigo_tipo_cliente, fh_alert, codigo_cliente;
El query mostrado al parecer genera un alto consumo por el uso del between aprox de 4.5s, sin el between reduce a menos de 1s, por ello nos recomendaron el particionamiento por la columna fh_alert, pero sin embargo la fecha de esta columna es la misma para todos lo registros de la tabla.
Espero y me puedan dar sugerencias sobre cómo reducir el tiempo.
Saludos !
Valora esta pregunta


0