Existen seis opciones utilizadas comúnmente que pueden ser aplicadas cuando creamos un índice.
• Unique o Non-Unique.
• Reserve Key.
• Compressed.
• Composite.
• Function Based.
• Ascending o Descending.
Todas estas seis variaciones aplican a los índices B*TREE, pero solo las últimas tres pueden ser aplicadas a los índices Bitmaps.
• Un Índice Unique no permitirá valores duplicados. Non-unique es el default. El atributo unique del índice opera independientemente de un Constraint Unique o Primary Key: la presencia de un Índice Unique no permitirá inserción de valores duplicados incluso si no hay tal Constraint definido. Un Constraint Unique o Primary Key puede utilizar índice Non-Unique; solo sucederá no tener valores duplicados. Esto es, de hecho un requerimiento para un Constraint que es Deferrable (impostergable), ya que puede haber un periodo (antes que las transacciones son confirmadas) cuando los valores duplicados existen.
• Un índice reverse key es construido sobre una versión de la columna llave con sus bytes invertidos: en lugar que indexé “John,” indexara “nhoj” cuando un SELECT es hecho. Oracle invertirá automáticamente el valor de la cadena de búsqueda. Esto es una técnica muy útil para evitar la contención de sistemas multiusuario. Por ejemplo, si muchos usuarios están insertando concurrentemente filas con llaves primarias basadas en un numero de incremento secuencial, todos sus índices insertados se concentraran en lo alto (final) del índice. Mediante las llaves invertidas, la llave índice consecutiva insertada tendera a extenderse a lo largo de todo el rango del índice. Incluso aunque “John” y “Jules” están muy juntas, “nhoj” and “seluj” serán muy muy distantes.
• Un índice compressed (comprimido) almacena valores llaves repetidos solo una vez. El valor por defecto es no compress, lo que significa que su un valor llave no es único, será almacenado una vez por cada ocurrencia, cada uno tiene un único puntero ROWID. Un índice Compressed almacenara la llave una vez, seguido por una cadena de todos los ROWID coincidentes.
• Un índice Composite (compuesto) está basado en la concatenación de dos o más columnas. No hay restricciones sobre los tipos de datos que se mezclan. Si un cadena de búsqueda no incluye todas las columnas, el índice puede todavía ser utilizado-pero si no incluye la extrema columna izquierda, oracle tendrá que utilizar un método skip-scanning que es mucho menos eficiente que si la columnas mas a la izquierda es incluida.
• Un índice function-based está basado sobre el resultado de una función aplicado a una o mas columnas, tales como UPPER (last_name) o to_char(startdate,’ccyy-m-dd’). Una consulta tendrá que aplicar la misma función a la cadena de búsqueda, o oracle no puede ser capaz de utilizar el índice.
Por defecto, un índice es ascending, significa que la llave es almacenada en orden de menor a mayor valor. Un índice descending invierte esto. De hecho, la diferencia no suele ser importante: las entradas en un índice son almacenadas como una lista doblemente ligada por lo que es posible ir de arriba abajo con igual rapidez, pero esto afectara el orden en el cual las filas son regresadas si son recuperadas con un rango de exploración de índice.
Comentarios
Publicar un comentario