Un índice es una estructura de disco (archivo) asociada a una tabla o una vista.Los índices sirven para buscar los datos mas rápidamente, sin tener que recorrer una tabla de manera secuencial (fila por fila) para dar con el dato.Permiten localizar y devolver registros de una forma sencilla y rápida. Son especialmente útiles cuando queremos buscar elementos de entre los millones y hasta billones de registros que puede contener una tabla en un momento dado.
Organizaciones indexadas
Indica el modo de organización según los índices, estos pueden ser secuenciales ordenados (estos se ordenan físicamente según un campo clave) y directos o hash (están organizados por una función hash según un campo clave)
Tipos de índices y usos
Primario:
Se define sobre ficheros ordenados por un campo clave
Agrupados:
Se define sobre ficheros ordenados por un campo no clave, es decir, que puede haber valores repetidos
Secundario (campo clave):
Se defino sobre ficheros no ordenados, este campo es único, es decir, no tiene valores repetidos, habrá una entrada en el índice por cada registro en el fichero
¿Cómo se crean?
Para crear índices se utiliza la instrucción "create index".
La sintaxis básica es la siguiente:
create TIPOdeINDICE index NOMBREINDICE on NOMBRETABLA(CAMPOS);
Los índices pueden ser: no únicos (los valores pueden estar repetidos) o únicos (los valores no pueden duplicarse). Por defecto, si no se indica el tipo de índice, este se creara Único
En el siguiente ejemplo creamos un índice único sobre el campo "documento" de la tabla "empleados":
create unique index I_empleados_documento on empleados(documento);
Una tabla puede indexarse por un campo (o varios).
Otro ejemplo de crear un índice compuesto para los campos "apellido" y "nombre":
create index I_empleados_apellidonombre on empleado(apellido,nombre);