Vous êtes sur la page 1sur 12

NDICES

Introduccin

1. NDICES

1.1 Tipos de ndices

1.1.1 Tipos de ndices en ORACLE

1.1.1.1 ndices B-Tree

1.1.1.2 ndices Bitmap

1.1.2 Tipos de ndices en SQL SERVER

1.1.2.1 ndices Agrupados

1.1.2.2 ndices No Agrupados

1.1.3 Tipos de ndices en POSTGRESQL

1.1.3.1 Vacuum Verbose Analyze

1.1.3.2 Fulltextindex

RECURSOS BIBLIOGRFICOS

10

GLOSARIO

11

FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Mapa conceptual
ndices
2
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

NDICES
INTRODUCCIN
Asegurar el funcionamiento ptimo de las bases de datos depende en gran
medida de tener procesos definidos y gestionados que se orienten prioritariamente a la disponibilidad de los datos. Es de mucho inters la forma
como estn dispuestos los diferentes archivos que integran todo el sistema y con ello tambin las acciones encaminadas a obtener la informacin
para las diferentes tareas de una organizacin de forma rpida y segura.
Existen muchas formas de configuracin y creacin de archivos, los ndices
aparecen como respuesta a la necesidad de poder acceder a los datos de
forma gil y previendo situaciones que tienen que ver con: planes de recuperacin de la informacin, restauracin ante problemas derivados de
desastres y dems actividades que un administrador de bases de datos
debe poder controlar y gestionar. Enfocados en estas tareas, nos ocuparemos de estudiar las diferentes opciones de ndices que se podran tener
creados y administrados en motores de bases de datos como: Oracle, Sql
Server y PostgreSQL.

1. NDICES
Los ndices son estructuras asociadas con las tablas o vistas que se crean
para mejorar el rendimiento inherente a procesos de actualizacin y recuperacin de datos, proporcionando adems una ruta de acceso directo a
registros. Los ndices se pueden crear asociados a uno o ms campos de
una tabla, teniendo en cuenta que una vez se crean, son automticamente mantenidos y utilizados en la base de datos.

3
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

Las operaciones asociadas a una tabla, como adicionar nuevos registros,


actualizacin de datos, o eliminacin de registros, se reflejan automticamente en todos los ndices y este tipo de acciones son originadas con total
transparencia a los usuarios. Los ndices tambin mejoran el rendimiento
en la definicin de llaves primarias y las restricciones de claves nicas.
Sin la presencia de ndices, una tabla en una base de datos, es totalmente
escaneada con cada operacin DML efectuada.

Indexes

Where key = 22
Row
Key pointer

22
22
Index

Table

1.1 Tipos de ndices


Los ndices estn estructurados para facilitar una respuesta rpida en un
conjunto de resultados, teniendo la opcin de crear diferentes tipos que
dependen de las necesidades y del motor de base de datos con el que se
est operando. A continuacin estudiaremos algunos tipos de ndices
analizando situaciones puntuales asociadas a los motores de bases de
datos Oracle, Sql Server y PostgreSQL.

4
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

1.1.1 Tipos de ndices en ORACLE


1.1.1.1 ndices B-Tree
El ndice B-Tree es el tipo de ndice ms comn en una base de datos
Oracle. Es el ndice default, es decir que si no se especfica el tipo al momento de crearlo, Oracle lo asigna como B-Tree.

Root

Branch
Leaf

Index entry
Index entry header
Key column length
Key column value
ROWID
Un ndice B-tree tiene sus valores clave almacenados en un rbol equilibrado, lo que permite una realizacin de bsquedas binarias rpidas.
La estructura de un ndice B-tree se define as: la parte superior del ndice
es la raz, que a su vez contiene las entradas que apuntan al siguiente
nivel en el ndice. El siguiente nivel contiene los bloques denominados
ramas que apuntan a los bloques del siguiente nivel en el ndice. En el
nivel ms bajo encontramos los nodos denominados hojas que contienen
las entradas del ndice que apuntan a los registros de la tabla. Las hojas
estn doblemente enlazadas para facilitar el anlisis del ndice en un
orden ascendente, as como descender por los valores clave.

5
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

1.1.1.2 ndices Bitmap


Este ndice tiene un mapa de bits para cada valor clave distinto que est
siendo indexado. En cada caso hay un conjunto de bits por cada registro
en la tabla que se est indexando. Esto permite bsquedas rpidas
cuando hay pocos valores distintos, es decir, el campo indexado tiene cardinalidad baja.

File 3
Block 10

Block 11

Block 12

Star

End

Key

ROWID

ROWID

Bitmap

<Blue,

10.0.3,

12.8.3,

1000100100010010100>

<Gree,

10.0.3,

12.8.3,

0001010000100100000>

<Red,

10.0.3,

12.8.3,

0100000011000001001>

<Yellow,

10.0.3,

12.8.3,

0010001000001000010>

Un ejemplo que podramos mencionar es el asociado al campo gnero que


tiene valores M y F manejando dos mapas de bits para la bsqueda. Si
un ndice de mapa de bits se utiliza en un campo numero_telefono, existiran muchos mapas de bits para administrar y la bsqueda se torna ineficiente.
Los ndices de mapa de bits pueden ser una mejor opcin que los B-tree
en situaciones como:

6
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

Cuando una tabla tiene millones de registros y los campos clave


tienen cardinalidad baja (Hay pocos valores distintos en la columna).
Cuando las consultas suelen manejar mltiples condiciones en el
WHERE con presencia de operadores lgicos como OR.
Cuando los campos definidos como claves se definen de solo
lectura o con mnimas actividades de actualizacin.
Un ndice Bitmap es organizado como un ndice B-tree, pero los nodos
representados en las hojas almacenan un mapa de bits por cada valor
clave en lugar de una lista de IDs de fila. Cada bit en el mapa de bit
corresponde a un ID de fila y si el bit es un conjunto, significa que el
registro con el correspondiente ID de fila contiene el valor clave.
Como se puede apreciar en la figura 3, el nodo hoja de un ndice Bitmap
contiene lo siguiente:
Una cabecera de entrada que contiene el nmero de campos y la
informacin de bloqueo.
Valores claves que contienen la longitud y valores pares de cada
campo clave.
1.1.2 Tipos de ndices en SQL SERVER
1.1.2.1 ndices Agrupados
Este tipo de ndice es particularmente eficiente para consultas, dado que los
registros de datos completos (en pginas de datos) son guardados a nivel de hoja
del B-tree. El ordenamiento y la ubicacin de los datos en un ndice agrupado son
similares al de un diccionario donde las palabras son ordenadas en forma
alfabtica y las definiciones aparecen junto a las palabras.
Cuando se crea una restriccin PRIMARY KEY en una tabla que no contiene un
ndice agrupado, Sql Server crear uno y utiliza la columna de clave primaria como
clave para el ndice agrupado. Si ya existe un ndice agrupado Sql Server crear
un ndice no agrupado sobre la columna definida con una restriccin PRIMARY
KEY. Una columna definida como la clave primaria es un ndice muy til porque
los valores de la columna estn garantizados que son nicos. ndices sobre
columnas de valores nicos son de menor tamao que los ndices sobre columnas
con valores duplicados y generan estructuras de bsqueda ms eficientes.

7
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

Una columna definida con una restriccin UNIQUE genera automticamente


un ndice no agrupado.
Para forzar el tipo de ndice a ser creado para una columna o columnas, se
puede especificar las clusulas CLUSTERED o NONCLUSTERED en los
comando CREATE TABLE, ALTER TABLE o CREATE INDEX. Como ejemplo
vamos a suponer que se crea una tabla Empleado que contiene los campos:
EmpleadoID, Nombre, Apellidos y NumDocumento. El campo EmpleadoID se
define con la restriccin PRIMARY KEY, el campo NumDocumento con la
restriccin UNIQUE.
Para hacer un ndice agrupado para el campo
NumDocumento y un ndice no agrupado para el campo EmpleadoID,
podemos usar la siguiente sintaxis:
CREATE TABLE dbo.Empleado
(
EmpleadoID int PRIMARY KEY NONCLUSTERED,
Nombre varchar(40),
Apellidos varchar(40),
NumDocumento char(15) UNIQUE CLUSTERED
)
Los ndices no se limitan a las restricciones. Se pueden crear ndices sobre
cualquier campo o combinacin de campos en una tabla. Los ndices agrupados aseguran la unicidad internamente, por tanto si se crea un ndice agrupado sobre campos con valores no nicos, Sql Server crea un nico valor sobre
los campos duplicados para servir de clave de ordenamiento secundaria.
1.1.2.2 ndices No Agrupados
Un ndice no agrupado es similar a un ndice al final de un libro, se puede
usar para ubicar las pginas que contienen un tema en el ndice del libro.
La base de datos usa los ndices no agrupados para encontrar registros
segn una clave.
Al igual que los ndices agrupados (clustered), los no agrupados (non clustered) son estructuras tipo B-tree. Un ndice no agrupado es una estructura de ndice separada, independiente del ordenamiento fsico de los registros en la tabla. Si existe un ndice agrupado en una tabla, un ndice no
agrupado utilizar al ndice agrupado para la bsqueda de los registros.
En la mayora de los casos se crear antes un ndice agrupado que los ndices no agrupados sobre una tabla.

8
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

1.1.3 Tipos de ndices en POSTGRESQL


1.1.3.1 Vacuum Verbose Analyze
PostgreSQL antes de crear un ndice, hace un poco de heurstica para
determinar qu tipo de estructura de datos utilizar y que sea ptima para
un campo o conjunto de campos. Si la informacin de la base de datos se
consultar con frecuencia sobre un atributo, ese es el candidato ideal para
ser indexado, y como en todos los motores de bases de datos, en el caso
de una llave primaria, PostgreSQL automticamente crea el ndice.
Una forma de conocer que campos conviene indexar, es correr un vacuum
verbose analyze sobre la base de datos para actualizar las estadsticas de
las tablas y luego utilizar la instruccin explain sobre las consultas que
sabemos sern las ms frecuentes.
1.1.3.2 Fulltextindex
Almacenar grandes textos en una base de datos no es muy recomendado,
como tampoco lo es crear ndices sobre este tipo de campos dado que las
bsquedas pueden llegar a efectuarse con el mismo contenido del campo.
Sin embargo puede presentarse el caso donde realmente sea necesario
tener un campo as y en el cual se deba crear un ndice, y es entonces
cuando se puede recurrir a la funcin fulltextindex que bsicamente lo que
hace es extraer las palabras y las referencias del registro de una tabla
auxiliar donde las palabras estn indexadas, de tal forma que cuando se
quiere formular una bsqueda sobre el campo de texto, se buscan las
palabras en esa tabla y lo que regresan son las referencias de las tuplas
donde aparecen generando un ahorro significativo en espacio y una
ganancia en velocidad.

9
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

RECURSOS BIBLIOGRFICOS
Abraham Silderschatz, Henry F. Korth, S Sadarshan(2006).
Fundamentos de bases de datos. McGRAW-HILL.
Dolores Cuadra, Elena Castro, Ana Iglesias, Paloma Martnez,
Javier Calle, Cesar De Pablo, Harith Al-Jumaily, Lourdes
Moreno(2008). Desarrollo de Bases de Datos: Casos prcticos
desde el anlisis de a la implementacin. Alfaomega, RA-MA.
Maria Billings, Deirdre Matishak, Jim Spiller, Priya
Vennapusa(2008). Oracle Database 11g: Administration
Workshop I.
James Womack, Tom Best, Donna Keesling, James Spliller, Maria
Billings, Gwen Lazenby (2009). Oracle Database 11g:
Administration Workshop II.
Webgrafa
Pgina recuperada el 28 de mayo de 2012, de ndices B-Tree :
http://sqleficiente.wordpress.com/2008/07/19/indices-b-tree/.
Pgina recuperada el 28 de mayo de 2012, de Manual de SQL
para Oracle: http://www.jorgesanchez.net/bd/oracleSQL.pdf.

10
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

GLOSARIO

B-TREE:

ndice ms comn en una base de datos Oracle

VACUUM
VERBOSE
ANALYZE :

Proceso que al ser ejecutado en PostgreSQL permite


conocer que campos conviene indexar.

11
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje

Indices

OBJETO DE
APRENDIZAJE

Indices

Desarrollador de contenido
Experto temtico

Fernelly Carvajal Silva

Asesor Pedaggico

Rafael Neftal Lizcano Reyes

Productor Multimedia

Jos Jaime Luis Tang Pinzn


Victor Hugo Tabares Carreo

Programadores

Daniel Eduardo Martnez Daz


Francisco Jos Lizcano

Lder expertos temticos

Ana Yaqueline Chavarro Parra

Lder lnea de produccin

Santiago Lozada Garcs

Atribucin, no comercial, compartir igual


Este material puede ser distribuido, copiado
y exhibido por terceros si se muestra en los
crditos. No se puede obtener ningn beneficio comercial y las obras derivadas tienen
que estar bajo los mismos trminos de
licencia que el trabajo original.

12
FAVA - Formacin en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje