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