0% encontró este documento útil (0 votos)
115 vistas4 páginas

Tarea#2 Indices

Un índice es una estructura de datos creada con el comando CREATE INDEX que mejora la velocidad de las consultas al permitir un rápido acceso a los registros de una tabla. Un índice contiene una copia de los datos de la tabla y ocupa espacio de disco propio, por lo que es redundante. Los índices más comunes son el B-Tree e índice bitmap; el B-Tree almacena una lista de rowids mientras que el bitmap usa un mapa de bits para cada valor clave del índice.

Cargado por

EdMa VidHerndz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como RTF, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
115 vistas4 páginas

Tarea#2 Indices

Un índice es una estructura de datos creada con el comando CREATE INDEX que mejora la velocidad de las consultas al permitir un rápido acceso a los registros de una tabla. Un índice contiene una copia de los datos de la tabla y ocupa espacio de disco propio, por lo que es redundante. Los índices más comunes son el B-Tree e índice bitmap; el B-Tree almacena una lista de rowids mientras que el bitmap usa un mapa de bits para cada valor clave del índice.

Cargado por

EdMa VidHerndz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como RTF, PDF, TXT o lee en línea desde Scribd

INDICE ( concepto general )

Un índice es una estructura diferente dentro de la base de datos; creado con el comando create
index. Requiere su propio espacio en disco y contiene una copia de los datos de la tabla. Eso
significa que un índice es una redundancia. Crear un índice no cambia los datos de la tabla;
solamente establece una nueva estructura de datos que hace referencia a la tabla. De hecho, un
índice de base de datos se parece mucho a un índice de un libro: ocupa su propio espacio, es
redundante y hace referencia a la información actual almacenada en otro lugar.

otro concepto

El índice de una base de datos es una estructura de datos que mejora la velocidad de las
operaciones, por medio de identificador único de cada fila de una tabla, permitiendo un rápido
acceso a los registros de una tabla en una base de datos.

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.

Que es un Indice B-TREE ?

El indice B-Tree es el tipo de indice mas comun en una base de datos Oracle. Es el indice
default, es decir que si uno crea un indice sin especificar el tipo, Oracle lo creara de tipo B-
Tree.

La estructura de un indice B-Tree tiene la forma de un arbol invertido. Las estructuras


superiores se llaman ramas y la estructura inferior constituyen las hojas. Generalmente los
indices B-Tree tienen uno o mas niveles de ramas. Cada rama de un nivel contiene
informacion sobre otras ramas del nivel inmediatamente inferior. En el grafico podemos
apreciar que la rama superior esta etiquetada con el nombre “Ingrid”. En el siguiente nivel
las ramas estan divididas en las alfabeticamente “menores” a la izquierda y las “mayores” a
la derecha. Por cada entrada en la tabla, el indice B-Tree registra una entrada en el indice.
Cuando se ejecuta una sentencia, Oracle va recorriendo el indice desde la parte superior
hasta encontrar el valor buscado.

Los indices no solo constituyen un metodo para acelerar la busqueda de datos. Tambien
pueden ser utilizados para forzar la unicidad de las columnas. Cuando se crea una clave
primaria sobre una tabla, Oracle crea un indice unico en forma automatica para garantizar la
unicidad de los valores.

Sintaxis general para la creación de un índice b-tree


CREATE INDEX "NOMBRE_ÍNDICE" ON "NOMBRE_TABLA"(NOMBRE_COLUMNA); Digamos que
tenemos la siguiente tabla: Tabla Nombre de Columna Tipo de Datos First_Name char(50)
Last_Name char(50) Address char(50) City char(50) Country char(25) Birth_Date datetime

Si deseamos crear un índice tanto en Ciudad como en País, ingresaríamos, CREATE INDEX
IDX_CUSTOMER_LAST_NAME ON Customer (Last_Name); No hay una regla estricta respecto de
cómo nombrar un índice. El método generalmente aceptado es colocar un prefijo, tal como
“IDX_”, antes del nombre de un índice para evitar la confusión con otros objetos de la base de
datos. También es una buena idea brindar información sobre qué tabla y columna(s) se utilizará
el índice. Por favor note que la sintaxis exacta para CREATE INDEX puede ser distinta según las
diferentes bases de datos

/************************** INDICE B-MAP **********************************/

El proposito de todo indice es proveer punteros a las filas de una tabla que tienen un valor determinado. En
un indice B-tree, este objetivo se logra almacenando una lista de rowids de las filas de la tabla con el valor
clave. Oracle almacena cada valor clave en forma repetida para cada fila. En un indice bitmap, en vez de
una lista de rowids, Oracle crea un mapa de bits para cada valor clave del indice.

Cada bit del mapa corresponde a un rowid posible. Si el bit esta en 1, significa que el rowid contiene dicho
valor clave. Una funcion interna de Oracle convierte la posicion del bit en el rowid conrrespondiente, de
modo tal que los indices bitmap ofrecen la misma funcionalidad que los indices B-tree, a pesar de la
diferente representacion interna. Si la cantidad de valores diferentes del indice es chica, entonces el indice
bitmap sera muy eficiente en cuanto al uso de espacio fisico.

Supongamos que tenemos la siguiente tabla de clientes:

CLIENTE APELLIDO REGION

101 PEREZ NORTE

102 GARCIA CENTRO

103 LOPEZ SUR

104 SAN MARTIN SUR

105 BROWN CENTRO

106 CANEPA CENTRO


La columna region tiene baja cardinalidad, ya que los valores posibles son muy pocos (NORTE, CENTRO,
SUR). Hay solamente tres valores posibles para la region por lo tanto un indice bitmap seria apropiado para
esta columna. Sin embargo, no es recomendable un indice bitmap para la columna CLIENTE o APELLIDO,
dada su alta cardinalidad. Para estos casos un indice B-tree proveera una representacion y acceso mas
eficiente.

La siguiente seria la representacion del indice bitmap para la columna REGION. El indice tiene tres mapas
de bits, uno para cada region.

NORTE CENTRO SUR

1 0 0

0 1 0

0 0 1

0 0 1

0 1 0

0 1 0

Cada entrada o bit en el indice bitmap se corresponde a una sola fila en la tabla de clientes. El valor del bit
dependera del valor correspondiente de la fila en la tabla. Por ejemplo, para la region NORTE el mapa de
bits tiene un 1 en la primer posicion. Eso es porque la primer fila de la tabla de clientes tiene el valor
NORTE en la columna REGION. Luego, el mapa de bits tiene todos ceros, indicando que el resto de las
filas de la tabla no tiene clientes en la region NORTE.

Una sentencia SQL sobre esta tabla y con el indice bitmap, ser resolveria de la siguiente manera.

select count(*) from CLIENTES

where REGION in ('NORTE','SUR');

Un indice bitmap puede resolver esta sentencia con gran eficiencia contando la cantidad de unos existentes
en el mapa de bits resultante como se muestra en la siguiente figura:

NORTE CENTRO SUR (NORTE O SUR)

1 0 0 1
0 1 0 0

0 0 1 1

0 0 1 1

0 1 0 0

0 1 0 0

La columna “NORTE O SUR” es el mapa de bits resultante utilizado para acceder a la tabla.

Adicionalmente y a diferencia de los indices B-tree, los indices bitmap pueden incluir filas con valore NULL
dentro de la estructura del indice. En cuanto a las tablas particionadas, los indices bitmap se pueden
utilizar solo si son locales a la particion. Los indices bitmap globales no son soportados para tablas
particionadas.

También podría gustarte