title: Índice (base de datos)
text: # Índice (base de datos)
  
  El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, por medio de un identificador único de cada fila de una tabla, permitiendo un rápido acceso a los registros de una tabla en una base de datos.
  
  ## Funcionamiento
  
  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 un registro que se encuentre en la posición marcada por el índice.
  
  ## Características
  
  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.
  
  Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.
  
  ## Espacio
  
  El espacio en disco requerido para almacenar el índice es generalmente 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. Esto permite almacenar en memoria principal los índices por completo, lo que permite realizar más rápida la búsqueda de la dirección física del registro en las tablas.
  
  ## Tipos
  
  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.
  
  ## Tipos de índices
  
  Existen índices:
  
  * Primarios: cuando se indexa usando un campo sin repeticiones (por ejemplo la clave primaria) de la tabla, y esa es la clave de ordenación de la tabla en disco.
  * De clúster: cuando se indexa usando un campo que puede contener repeticiones (no es clave primaria) que es la clave de ordenación de la tabla en disco.
  * Secundario: se indexa por un campo (con repeticiones o no), que no es el de ordenación de la tabla en disco.
  