Hola a todos,
Entiendo que esta es una pregunta común, pero sentí que sería mejor aclararla.
Tengo una tabla enorme que consume 95 GB de espacio. Tiene un
índice agrupado en cinco columnas (ID, Nombre, Clase, Nombre de Grupo y Estado).
La columna ID es una columna de identidad con precisión 15 y escala 0. Teníamos un problema de filas duplicadas debido a la columna de identidad en esta tabla.
Por ejemplo, según nuestras necesidades comerciales, no deberíamos permitir dos filas con los mismos valores de Nombre, Clase, Nombre de Grupo y Estado. Nuestro servidor ASE es accedido por otra aplicación - dbAnalytics que insertará, actualizará y eliminará registros de nuestra base de datos. Cuando se inserta una fila por primera vez, se insertará con el estado insertado. Cuando dbAnalytics intenta actualizar el mismo registro en la base de datos, debería actualizar el registro existente y cambiar la columna de estado a actualizado. Tenemos un problema aquí. La columna de identidad genera nuevos valores de ID e inserta las filas como un nuevo registro en lugar de actualizar el existente. No entendemos completamente cómo funciona dbAnalytics, por lo tanto, estamos tratando de solucionar esto desde el backend.
Debido a los problemas encontrados con la columna de Identidad, hemos decidido eliminar la columna ID del índice agrupado y recrearlo en 3 columnas, a saber - Nombre, Clase y Nombre de Grupo.
Según nuestro conocimiento, el índice agrupado ordenará los datos en orden clasificado, lo que ayudaría en las consultas de rango. Dado que estamos eliminando la columna ID que ayudaba a que los datos en la tabla se ordenaran secuencialmente, dudo en los problemas de rendimiento que podríamos tener en el futuro si creamos un índice agrupado. Dado que el índice agrupado tiende siempre a mantener los datos en orden clasificado, hay una sobrecarga adicional en reorganizar los datos durante inserciones o actualizaciones.
Por lo tanto, estamos pensando en crear
un índice no agrupado o un índice no agrupado único en estas tres columnas (Nombre, Clase y Nombre de Grupo).
Tenemos una preocupación sobre el rendimiento del disco adicional necesario para navegar a la página de datos desde la página de índice. Esperamos que esto no tenga un gran impacto.
Necesitamos ayuda para decidir si podemos optar por un índice agrupado o no agrupado según el análisis detallado anteriormente. Por favor, también avísenos si hay algún otro enfoque mejor disponible.
Gracias de antemano.
Saludos
ADNAN