febrero 25, 2026

Cambio de Vistas Materializadas con uso de WITH CTE en el sitema del AS2-ERP

 

Innovaciones, Optimizaciones y Nuevas Funcionalidades del Ecosistema AS2

Índice

Cambios, Mejoras o Actualizaciones

Manual de Procedimientos para Mejoras y Actualizaciones

Ecosistema AS2

Este manual documenta de manera detallada los procesos de cambio, optimización o actualización implementados en las soluciones del Ecosistema AS2.

CAMBIOS, MEJORAS O ACTUALIZACIONES

SISTEMA: AS2 ERP

ANTECEDENTES

Durante la revisión de la estructura de la base de datos del sistema, se identificó para dialecto PostgreSQL se emplean tablas materializadas lo que tomaba mucho tiempo de ejecución, causando problemas de visualización a nivel técnico sin un control para duplicados, en cambio para dialecto SQL Server, se crean las vistas con una sentencian que creaba dependencias y al momento de desplegar el sistema el proyecto no podía eliminar dichas vistas.

OBJETIVO

  • Convertir las Vistas materializadas a tablas.
  • Controlar las columnas de Unique Constraint e Índex.
  • Optimizar las consultas, las cuales insertan la información en las tablas de las vistas materializadas.
  • Ejecutar un script el cual elimine las dependencias de las vistas creadas con “WITH SCHEMABIDING”

DESARROLLO

Durante el despliegue se ejecutará un script de actualización encargado de:

  • La extracción de datos de las distintas tablas, controlando Índex y Unique Constraint
  • Eliminación de las dependencias de las Vistas Cliente.
  • Mejora el rendimiento de dichas tablas, para mejorar el rendimiento al realizar el despliegue del sistema (Deploy).

Este proceso permitirá mantener una estructura homogénea y facilitará futuras tareas de mantenimiento.

Explicación de la Utilidad y Solución aplicada.

  • Eliminación de vistas con WITH SCHEMABINDING

Se desarrolló un script que identifica las vistas del módulo Cliente creadas con la cláusula WITH SCHEMABINDING. El proceso extrae la definición de cada vista, la almacena temporalmente, elimina la vista original y luego la recrea sin dicha cláusula, evitando así las dependencias que bloqueaban los despliegues y modificaciones del esquema.

  • Sustitución de vistas por tablas gestionadas

Las vistas utilizadas anteriormente fueron reemplazadas por tablas físicas administradas desde el sistema. La creación de estas tablas ahora se realiza directamente desde código, definiendo explícitamente sus restricciones únicas, índices y estructura, lo que permite un control más preciso del modelo de datos y mejora la capacidad de mantenimiento.

  • Optimización del rendimiento mediante CTE (WITH)

Las consultas responsables de poblar estas tablas fueron optimizadas introduciendo Expresiones de Tabla Comunes (CTE) mediante la sentencia WITH. Esta técnica mejora la legibilidad, el desempeño y la eficiencia en la inserción de datos, especialmente en operaciones de carga donde se reutilizan subconjuntos de información dentro de la misma consulta.

Actualización del sistema.

Al momento de realizar la actualización del sistema por única vez se debe ejecutar los siguientes Querys en la base de datos antes de desplegar el Wildfly (Deploy).

  • PostgreSQL

Eliminar PostgreSQL.sql: con el sistema detenido o inhabilitado. Ejecutar el siguiente Querys, y posteriormente habilitar el sistema AS2-ERP.

Fracmento del querys:

  • SQL Server

Para este caso tenemos dos ejecuciones antes de habilitar el sistema AS2-ERP.

Eliminar vistas With y Volverlas a crear.sql: Identificar todas las vistas que fueron creadas con WITH SCHEMABINDING, analizar sus dependencias, guardarlas, eliminarlas en el orden correcto y luego recrearlas sin WITH SCHEMABINDING.

Eliminar SQL.sql: : con el sistema detenido o inhabilitado. Ejecutar el siguiente Querys,

Posterior a la ejecución: eliminar la tabla.

Consideraciones Generales

  • Únicamente afecta a las tablas del sistema AS2-ERP.
  • Los querys antes mencionados no son necesarios ser ejecutados.
  • unicamente una vez se debe ejecutar querys “Eliminar vistas With y volverlas a crear”, para las bases de SQL_Server.
  • Considerar los clientes que tengan servicio del ANA_IA.