PIENSOPIENSO: Porque empeora la performance de este programa?
En la base de datos, tengo una tabla que se crea asi:
y defino un indice de usuario por el campo Fecha.
Tengo un programa (procedure GeneXus)
que funciona muy bien.
Se reorganiza desde GeneXus la base de datos y se cambia la clave de la tabla Tabla1 quedando asi:
Lo que se hace es agregarle un campo mas a la clave primaria.
El procedure no cambia, pero sin embargo luego de reorganizar la tabla empieza a funcionar mucho mas lento que antes. Que puede haber pasado?
Tabla1
*Campo1 N(4)
Campo2 N(4)
Valor C(20)
Fecha Date
y defino un indice de usuario por el campo Fecha.
Tengo un programa (procedure GeneXus)
for each order Fecha
where &FechaInicial <= Fecha and Fecha <= &FechaFinal
Msg(Valor,status)
endfor
que funciona muy bien.
Se reorganiza desde GeneXus la base de datos y se cambia la clave de la tabla Tabla1 quedando asi:
Tabla1
*Campo1 N(4)
*Campo2 N(4)
Valor C(20)
Fecha Date
Lo que se hace es agregarle un campo mas a la clave primaria.
El procedure no cambia, pero sin embargo luego de reorganizar la tabla empieza a funcionar mucho mas lento que antes. Que puede haber pasado?
Ja, perdiste el índice de usuario, porque al cambiar la clave pasa a ser una tabla nueva... Error de principiante :)
ResponderBorrarComo muy bien comenta Marcos el problema es sencillo y también MUY COMÚN.
ResponderBorrarLos indices de usuario quedan asociados a la clave de la tabla y no al nombre de dicha tabla. Cada vez que se modifique la clave primaria de una tabla deben Definirse nuevamente los indices de usuario.
En mi experiencia, es algo que los programadores Genexus no conocen o se olvidan muy a menudo.