si tenemos tablas muy voluminosas que cambian su contenido a menudo suele pasar que esas tablas se vuelven lentas. Lo mejor es re-hacer los indices de las tablas y en casos extremos de tablas enteras de vez en cuando. De ese modo re-ordenamos los indices y re-ordenamos el contenido de forma que a Oracle le sea más fácil buscar.
¡ Ten cuidado de que tengas suficiente espacio en el espacio de tablas temporal!
1. creas una copia de la tabla
RENAME tabla TO tabla_X;
2. te cargas el indice o lo que haya
DROP INDEX INDEX_PEPITO;
3. Te cargas la clave primaria
TABLE tabla DROP PRIMARY KEY;
4. cramos una nueva tabla igual a la anterios
CREATE TABLE tabla ( campo1 VARCHAR2(18 BYTE) NOT NULL ENABLE, campo2 VARCHAR2(4 BYTE) NOT NULL ENABLE, campo3 VARCHAR2(4 BYTE) NOT NULL ENABLE, campo4 VARCHAR2(6 BYTE) NOT NULL ENABLE, campo5 NUMBER DEFAULT 0, campo6 NUMBER(6,2) DEFAULT 0, CONSTRAINT clave_primaria PRIMARY KEY (campo1, campo2) DISABLE );
5. Volvemos a meterlo todo todo pero ordenadito
INSERT /*+ APPEND */ INTO MD_CUBE_9 SELECT * FROM tabla_X ORDER BY 1, 2;
6. Commit pa que grave
COMMIT;
7. activamos la clave primaria
ALTER TABLE tabla MODIFY CONSTRAINT clave_primaria ENABLE;
8. Reconstruimos los indices
CREATE INDEX INDEX_PEPITO ON tabla (campo1, campo2, campo3);
8. Commit antes de acabar
COMMIT;
9. Si eres un paranoico cuentas los registros de la tabla tabla_x y la tabla nueva para ver que tienen la misma cantidad