Re-hacer Indices y Tablas

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!

¿como hacerlo?

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

 
ora/redo.txt · Última modificación: 2008/11/10 11:53 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki