martes, 5 de agosto de 2014

Crear un índice con Oracle 11g



Bueno la entrada de hoy vamos a hablar de los índices de una BD. Un índice es una Estructura de Datos que mejora la velocidad en las operaciones de la BD. ¿Y cómo hace esto? , muy sencillo, el índice es un identificador único de cada una de los registros de una tabla de la BD con esto se permite un rápido acceso a ese registro, se suele hacer sobre aquellos campos que se requieren en frecuentes búsquedas.



En Oracle 11g los índices son opcionales, pero son bastante utilizados o casi imprescindibles. El índice está asociado a una tabla mediante una o varias columnas. Con esto como ya comenté antes se logra que las operaciones a la BD, por ejemplo, una consulta devuelva el resultado más rápidamente, con una tabla enorme es muy ventajoso. Las tablas pueden tener más de un índice, además puede haber índices compuestos.




Un cosa que hay que advertir también es que si bien se mejoran las operaciones de consulta (SELECT), empeoran mínimamente las operaciones de borrado y de inserción. (DELETE e INSERT)


A continuación voy a comentar como crear un índice en una tabla con Oracle 11g, se hace de la siguiente manera, sin tener en cuenta las clausulas y los atributos que podría tener:


CREATE [UNIQUE|BITMAP] INDEX [esquema.]nombre_indice
      ON [esquema.]nombre_tabla [alias_tabla]
         (col [ASC | DESC])

Por ejemplo, tenemos la tabla CLIENTE (nombre,apellidos,tlfno,DNI,sexo,edad), en el esquema EmpresaSA. Si en esta tabla queremos crear un índice lo tendríamos que hacer de la siguiente manera:
CREATE INDEX EmpresaSA.cliente_idx1 
 ON EmpresaSA.cliente (DNI);
Si ahora lo que queremos crear es un índice compuesto por apellido y el DNI sería de la siguiente manera:
CREATE INDEX EmpresaSA.cliente_idx2 
 ON EmpresaSA.cliente (apellido,DNI);
Ambos índices los va a crear en el TABLESPACE en que tenga por defecto el usuario que los ha creado.  Espero que con esto os pueda servir de ayuda para la creación sencilla de un índice.