Documente Academic
Documente Profesional
Documente Cultură
Título: ÍNDICES
Ni que decir tiene que la opción dos es la correcta, y es de este modo como se utiliza
un índice en las bases de datos. Se define el índice a través de uno o más campos y es a
partir de este punto desde donde se busca para, una vez encontrado, devolver el
registro que se encuentre en la posición marcada por el índice.
El índice de una base de datos es una estructura de datos que mejora la velocidad de
las operaciones, permitiendo un rápido acceso a los registros de una tabla. Al
aumentar drásticamente la velocidad de acceso, se suelen usar sobre
aquellos campos sobre los cuales se hagan frecuentes búsquedas.
VENTAJAS
DESVENTAJAS
Los índices son una desventaja en aquellas tablas en las que se utiliza
frecuentemente operaciones de escritura (Insert, Delete, Update), esto es
porque los índices se actualizan cada vez que se modifica una columna.
Los índices también suponen una desventaja en tablas demasiado
pequeñas puesto que no necesitaremos ganar tiempo en las consultas.
Tampoco son muy aconsejables cuando pretendemos que la tabla sobre la que
se aplica devuelva una gran cantidad de datos en cada consulta.
Por último hay que tener en cuenta que ocupan espacio y en determinadas
ocasiones incluso más espacio que los propios datos.
TIPOS DE ÍNDICES EN ORACLE
ÍNDICE B-TREE
El índice B-Tree es el tipo de índice más común en una base de datos Oracle. Es el
índice por defecto, es decir que si uno crea un índice sin especificar el tipo, Oracle lo
creara de tipo B-Tree.
Índices B-tree se utilizan para evitar las grandes operaciones de ordenación. Por
ejemplo, una consulta SQL que requieren 10.000 filas para ser presentado en forma
ordenada con frecuencia utiliza un índice B-tree para evitar el tipo muy grandes
obligados a entregar los datos al usuario final.
Los índices B-TREE obtienen el mejor resultado cuando se aplican sobre columnas con
una alta cardinalidad, es decir, sobre columnas que tengan muchos valores diferentes.
Una tabla de índices organizados es una tabla almacenada en una variación de una
estructura de índices B-tree. En una tabla organizada en el heap, las filas se insertan
donde entren. En una tabla de índices organizados, los registros se guardan en un
índice que se define en la clave principal de la tabla. Cada entrada de índice B-tree
también almacena los valores de columna que no son clave.
Las tablas de índices organizados son útiles cuando piezas de datos relacionadas deben
almacenarse juntas o los datos deben estar físicamente almacenados en un orden
específico. Este tipo de tabla es de uso frecuente para la recuperación de información.
ÍNDICE REVERSE-KEY
En este tipo de índice, los bytes de la clave del índice se invierten, por ejemplo, 103 se
almacena como 301. Considere una columna que incluya nombres como “restaurant
A”, “restaurant B” y “restaurant C”. Esta columna tiene muchos valores únicos pero
que no varían mucho al comienzo. En este caso sería ideal usar un índice Reverse-key,
ya que Oracle invertiría la cadena antes de colocarla en el B-tree. Así, el resultado será
un índice más equilibrado, útil y rápido.
Este tipo de índice almacena datos en una columna o columnas en orden ascendente o
descendente.
Este tipo de índice se utiliza para indexar una clave cluster de la tabla. En lugar de
apuntar a una fila, la clave apunta al bloque que contiene las filas relacionadas a la
clave cluster. Un índice clúster es una tabla clúster que utiliza un índice para localizar
los datos.
Es como un índice cluster, excepto que la clave del índice es remplazada por una
function hash. No existe índice cluster separado. En un hash cluster, los datos son el
índice. Los Hash clusters pueden ser beneficiosos en los siguientes casos:
En un índice bitmap, en vez de una lista de rowids, Oracle crea un mapa de bits para
cada valor clave del índice. Cada bit del mapa corresponde a un rowid posible. Si el bit
esta en 1, significa que el rowid contiene dicho valor clave. Una función interna de
Oracle convierte la posición del bit en el rowid correspondiente, de modo tal que los
índices bitmap ofrecen la misma funcionalidad que los índices B-tree, a pesar de la
diferente representación interna. Si la cantidad de valores diferentes del índice es
chica, entonces el índice bitmap será muy eficiente en cuanto al uso de espacio físico.
Estos índices llevan a los índices Bitmap un paso más allá. Ellos toman por completo las
columnas de mapa de bits de los datos de tabla, y lo almacenan en el índice. La
presunción es que esos conjuntos de columnas siempre se consultarán juntos. Estos
índices también son para bases de datos de almacenamiento de datos. La sentencia de
creación se parece la de un índice Bitmap excepto que tiene una cláusula WHERE al
final.
Se pueden crear índices en las funciones y expresiones que incluyan una o más
columnas en la tabla que se esté indexando. Un índice basado en funciones calcula el
valor de una función o expresión que implique una o varias columnas y la almacena en
el índice. Un índice basado en funciones puede ser un índice B-tree o un índice de
mapa de bits.
La función utilizada para la construcción del índice puede ser una expresión aritmética
o una expresión que contenga una función SQL, función PL/SQL definida por el usuario,
función de paquete, o una llamada C. Por ejemplo, una función podría sumar los
valores en dos columnas.
ÍNDICE DE DOMINIO
Este tipo de índice es creado por un usuario para datos en un dominio de aplicación
específica. El índice físico no necesita utilizar una estructura de índices tradicionales y
se pueden almacenar en la base de datos de Oracle como tablas o externamente como
un archivo.
ÍNDICE INVISIBLE
Estos índices son nuevos en 11g. Se crean como un índice normal, pero invisible para el
optimizador basado en costos. Esto puede permitir poner a prueba el rendimiento de
las consultas grandes, sin afectar a la aplicación que está corriendo en ese momento.
Existen tres tipos de índices cuya naturaleza depende de la forma en que haya sido
creado. Estos tipos son:
Un índice no único, que es aquel que no impone la restricción de que las filas
no deban repetirse.
Un índice compuesto es aquel que agrupa varias columnas de la tabla. Este tipo
es muy útil cuando las sentencias de selección (SELECT) efectúan búsquedas
por varios criterios (columnas) en una misma tabla. Es importante el orden en
que se ponen las columnas al crear el índice; la columna más referenciada
debería ser puesta en primer lugar y así sucesivamente.
Cuando se crea un índice (de cualquier tipo) también se crea un segmento de datos
para guardar esa información, que también se verá afectada por la misma
cláusula storage que se estudió para el caso de las tablas.
CREACIÓN DE ÍNDICES
La creación de índices, como ya hemos visto, permite acelerar las consultas que se
realizan en la base de datos.
Las sentencias de SQL para manipular índices son:
CREATE INDEX;
DROP INDEX;
Las claves primarias son índices. Los nombres de los índices deben ser únicos.
DROP INDEX
<nombre_tabla>.<nombre_indice>;
BIBLIOGRAFÍA
http://www.devjoker.com/contenidos/Tutorial-SQL-/12/Indices.aspx
http://knol.google.com/k/índices-en-oracle#
http://gloriaisabelparra.spaces.live.com/blog/cns!409FD0578C87C97D!176.ent
ry
http://www.comp.dit.ie/btierney/oracle11gdoc/server.111/b28286/statement
s_5011.htm
http://es.wikipedia.org/wiki/Índice_(base_de_datos)
http://susanmendoza.blogspot.com/2009/09/1-que-es-y-para-que-sirve-un-
tablespace.html
http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/indexiot.htm
http://www.dbasupport.com/oracle/ora11g/indexing.shtml