indices oracle

Upload: mdreckmann

Post on 15-Jul-2015

420 views

Category:

Documents


0 download

TRANSCRIPT

NDICES EN ORACLEADMINISTRACIN DE BASES DE DATOS

Jess Armand Calejero Romn

NDICE DE CONTENIDOS

Qu es un ndice? Tipos de ndices en Oracle ndices creados por Oracle de manera automtica Consideraciones de los ndices Reglas en el diseo de ndices Sintaxis: Creacin Sintaxis: Modificacin Sintaxis: Eliminacin Estructura B*-Tree Estructura B*-Tree (Grfico) Estructura B*-Tree (Convenios) Estructura Bitmap2ndices en Oracle

QU ES UN NDICE?

Un ndice es una estructura de memoria secundaria que permite el acceso directo a las filas de una tabla (est o no agrupada). Aumenta la velocidad de respuesta de la consulta, mejorando su rendimiento y optimizando su resultado. Su manejo se hace de forma inteligente. Es el propio Oracle quien decide qu ndice se necesita.

3ndices en Oracle

TIPOS DE NDICES EN ORACLE

Lectura/Escrituray y y

B-tree (rboles binarios) Function Based Reserve key

Slo lectura (read only)y y y y

Bitmap Bitmap join Index-organized table (algunas veces usados en lectura/escritura) Cluster y hash cluster

Domain (muy especficos en aplicaciones Oracle)

4ndices en Oracle

NDICES CREADOS POR ORACLE DE MANERA AUTOMTICA

Al crearse la tabla se crea:y

y

y

y

Un ndice UNIQUE basado en B*-tree para mantener las columnas que se hayan definido como clave primaria de una tabla utilizando el constraint PRIMARY KEY de una tabla no organizada por ndice. Un ndice UNIQUE basado en B*-tree para mantener la restriccin de unicidad de cada grupo de columnas que se haya declarado como nico utilizando el constraint UNIQUE. Un ndice basado en B*-tree para mantener las columnas que se hayan definido como clave primaria y todas las filas de una tabla organizada por ndice. Un ndice basado en hashing para mantener las filas de un grupo de tablas (cluster) organizado por hash.

5ndices en Oracle

CONSIDERACIONES DE LOS NDICES

Un ndice slo es efectivo cuando es utilizado. El mantenimiento de un ndice tiene efecto sobre el rendimiento de las operaciones de eliminacin, insercin y actualizacin. ORACLE impone dos restricciones:y y

El nmero mximo de columnas: Btree 32 col. Bitmap 30 col. El espacio requerido para almacenar una clave no puede exceder la mitad del espacio disponible para almacenar datos en un bloque ORACLE

Restricciones en Oracle 86ndices en Oracle

REGLAS EN EL DISEO DE NDICES

Indexe solamente las tablas cuando las consultas no accedan a una gran cantidad de filas de la tabla. No indexe tablas que son actualizadas con mucha frecuencia. Indexe aquellas tablas que no tengan muchos valores repetidos en las columnas escogidas. Las consultas muy complejas (en la clusula WHERE) por lo general no toman mucha ventaja de los ndices.

7ndices en Oracle

SINTAXIS: CREACIN

Bsicay

CREATE INDEX nombre_indice ON [esquema.] nombre_tabla (columna1 [, columna2, ...])

UNIQUE garantizan que en una tabla (o cluster) no puedan existir dos filas con el mismo valor.

8ndices en Oracle

SINTAXIS: MODIFICACIN

Bsicay

ALTER INDEX [schema.]index options

9ndices en Oracle

SINTAXIS: ELIMINACIN

Bsicay

DROP INDEX [schema.]index [FORCE]

10ndices en Oracle

ESTRUCTURA: B*-TREE

Se estructura como un rbol cuya raz contiene mltiples entradas y valores de claves que apuntan al siguiente nivel del rbol. Nivel 0.y

tablas pequeas de datos estticos. Indexa tablas dinmicas con el valor nico de los identificadores de columna. Indexa largas tablas o con poca cardinalidad.

Nivel 1.y

Nivel 2.y

11ndices en Oracle

ESTRUCTURA: B*-TREE (GRFICO)

12ndices en Oracle

ESTRUCTURA: B*-TREE (CONVENIOS)

Los siguientes convenios son utilizados para almacenamiento en un ndice basado en B*- Tree:y

el

En caso de que un ndice no sea UNIQUE, si mltiples filas poseen el mismo valor de la clave en la estructura del ndice se repetirn los valores de dichas claves. Si una fila posee para todas las columnas de la clave el valor NULL, en el ndice no existir una entrada correspondiente a dicha fila. Si la tabla no est particionada, se utilizan ROWIDs restringidos para indicar la direccin de la fila. Esto se debe a que todas las filas de la tabla no se encuentran en un mismo segmento y con esta poltica el ndice requiere menos espacio en disco.

y

y

13ndices en Oracle

ESTRUCTURA: BITMAP

Son efectivos para columnas simples con poca cardinalidad, esto es muchos valores distintos.Ms rpidos que los B*-Tree en entornos de read-only. Almacenan valores de 0 1 en el ROWID.Ejemplo:y

create bitmap index person_region on person (region);

Row 1 2 3 4 5 6

Region North East East West South North

North 1 0 0 0 0 1

East 0 1 1 0 0 0

West 0 0 0 1 0 0

South 0 0 0 0 1 014

ndices en Oracle