lunes, 13 de mayo de 2013



Manejo de índices
¿Qué es un índice?
El índice  es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas.
El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.
Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.
El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de una parte de la tabla.
Algunas bases de datos amplían la potencia del indexado al permitir que los índices sean creados de funciones o expresiones. Por ejemplo, un índice puede ser creado sobre la función upper(apellido), que almacenaría en el índice solamente las versiones mayúsculas del campo apellido. Otra opción a veces soportada, es el uso de índices "filtrados", donde las entradas del índice son creadas solamente para los registros que satisfagan una cierta expresión condicional. Un aspecto adicional de flexibilidad es permitir la indexación en funciones definidas por el usuario, también como expresiones formadas de un surtido de funciones incorporadas. Todos estos refinamientos de la indexación son soportados en Visual FoxPro y otros lenguajes de programación, por ejemplo.1
Los índices pueden ser definidos como únicos o no únicos. Un índice único actúa como una restricción en la tabla previniendo filas idénticas en el índice.
Tipos de  índice


Como Crear  índices en MySql
Un índice (KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado. Los índices (como los índices de los libros) sirven para agilizar las consultas a las tablas, evitando que mysql tenga que revisar todos los datos disponibles para devolver el resultado.
Podemos crear el índice a la vez que creamos la tabla, usando la palabra INDEX seguida del nombre del índice a crear y columnas a indexar (que pueden ser varias):
INDEX nombre_indice (columna_indexada, columna_indexada2...)
Podemos también añadirlos a una tabla después de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Si queremos eliminar un índice:
ALTER TABLE tabla_nombre DROP INDEX nombre_indice
Los index permiten mayor rápidez en la ejecución de las consultas a la base de datos de la clausula SELECT. Son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer practicamente la mitad del indice. Los tipos de indices mas comun son:
  • INDEX: se explicará mas adelante.
  • PRIMARY KEY: Se trata de un índice diseñado para consultas especialmente rápidas. Todos sus campos deben ser unicos y no admite NULL
  • UNIQUE: se trata de un indice que no permite almacenar dos valores iguales.
  • FULL TEXT: permiten realizar búsquedas de palabras. Puedes crear indices FULLTEXT sobre columnas tipo CHAR, VARCHAR o TEXT.
Como Crear  índices en Oracle
El estamento básico para crear índices en una base de datos Oracle 11g es:
1.CREATE INDEX <em>nombre_indice</em> ON <em>nombre_tabla</em> (<em>columna, columna1,….</em>);
En el artículo - Introducción a la creación de tablas en Oracle 11g - creamos la tabla clientes, vamos a utilizarla como base para practicar la creación de índices.
En primer lugar vamos a crear un índice sobre la columna CIF para que nuestras búsquedas por esta columna sean llo más rapidas posible:
1.CREATE INDEX factura.clientes_idx1 ON factura.clientes (CIF)
2.TABLESPACE FACTURA_IDX01;
Vamos a crear otro índice compuesto por las columnas NombreCli y DireccionCli:
1.CREATE INDEX factura.clientes_idx2 ON factura.clientes (NombreCli, DireccionCli)
2.TABLESPACE FACTURA_IDX01;

Crear  mínimo 4 archivos indices en la base de datos (veterinaria)




Bibliografìa


No hay comentarios:

Publicar un comentario