Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ÍNDICES EN ORACLE ADMINISTRACIÓN DE BASES DE DATOS Jesús Armand Calejero Román
ÍNDICE DE CONTENIDOS <ul><li>¿Qué es un índice? </li></ul><ul><li>Tipos de índices en Oracle </li></ul><ul><li>Índices cre...
¿QUÉ ES UN ÍNDICE? <ul><li>Un índice es una estructura de memoria secundaria que permite el acceso directo a las filas de ...
TIPOS DE ÍNDICES EN ORACLE <ul><li>Lectura/Escritura </li></ul><ul><ul><li>B-tree (árboles binarios) </li></ul></ul><ul><u...
ÍNDICES CREADOS POR ORACLE DE MANERA AUTOMÁTICA <ul><li>Al crearse la tabla se crea: </li></ul><ul><ul><li>Un índice UNIQU...
CONSIDERACIONES DE LOS ÍNDICES <ul><li>Un índice sólo es efectivo cuando es utilizado. </li></ul><ul><li>El mantenimiento ...
REGLAS EN EL DISEÑO DE ÍNDICES <ul><li>Indexe solamente las tablas cuando las consultas no accedan a una gran cantidad de ...
SINTAXIS: CREACIÓN <ul><li>Básica </li></ul><ul><ul><li>CREATE INDEX nombre_indice ON [esquema.] nombre_tabla (columna1 [,...
SINTAXIS: MODIFICACIÓN <ul><li>Básica </li></ul><ul><ul><li>ALTER INDEX [schema.]index options </li></ul></ul>Índices en O...
SINTAXIS: ELIMINACIÓN <ul><li>Básica </li></ul><ul><ul><li>DROP INDEX [schema.]index [FORCE] </li></ul></ul>Índices en Ora...
ESTRUCTURA: B*-TREE <ul><li>Se estructura como un árbol cuya raíz contiene múltiples entradas y valores de claves que apun...
ESTRUCTURA: B*-TREE (GRÁFICO) Índices en Oracle
ESTRUCTURA: B*-TREE (CONVENIOS) <ul><li>Los siguientes convenios son utilizados para el almacenamiento en un índice basado...
ESTRUCTURA: BITMAP <ul><li>Son efectivos para columnas simples con poca cardinalidad, esto es muchos valores distintos. </...
Upcoming SlideShare
Loading in …5
×

Indices en oracle

41,687 views

Published on

Pequeña aproximación a los índices en oracle. Visita http://calejero.blogsome.com

Published in: Technology, Business

Indices en oracle

  1. 1. ÍNDICES EN ORACLE ADMINISTRACIÓN DE BASES DE DATOS Jesús Armand Calejero Román
  2. 2. ÍNDICE DE CONTENIDOS <ul><li>¿Qué es un índice? </li></ul><ul><li>Tipos de índices en Oracle </li></ul><ul><li>Índices creados por Oracle de manera automática </li></ul><ul><li>Consideraciones de los índices </li></ul><ul><li>Reglas en el diseño de índices </li></ul><ul><li>Sintaxis: Creación </li></ul><ul><li>Sintaxis: Modificación </li></ul><ul><li>Sintaxis: Eliminación </li></ul><ul><li>Estructura B*-Tree </li></ul><ul><li>Estructura B*-Tree (Gráfico) </li></ul><ul><li>Estructura B*-Tree (Convenios) </li></ul><ul><li>Estructura Bitmap </li></ul>Índices en Oracle
  3. 3. ¿QUÉ ES UN ÍNDICE? <ul><li>Un índice es una estructura de memoria secundaria que permite el acceso directo a las filas de una tabla (esté o no agrupada). </li></ul><ul><li>Aumenta la velocidad de respuesta de la consulta, mejorando su rendimiento y optimizando su resultado. </li></ul><ul><li>Su manejo se hace de forma inteligente. Es el propio Oracle quien decide qué índice se necesita. </li></ul>Índices en Oracle
  4. 4. TIPOS DE ÍNDICES EN ORACLE <ul><li>Lectura/Escritura </li></ul><ul><ul><li>B-tree (árboles binarios) </li></ul></ul><ul><ul><li>Function Based </li></ul></ul><ul><ul><li>Reserve key </li></ul></ul><ul><li>Sólo lectura (read only) </li></ul><ul><ul><li>Bitmap </li></ul></ul><ul><ul><li>Bitmap join </li></ul></ul><ul><ul><li>Index-organized table (algunas veces usados en lectura/escritura) </li></ul></ul><ul><ul><li>Cluster y hash cluster </li></ul></ul><ul><li>Domain (muy específicos en aplicaciones Oracle) </li></ul>Índices en Oracle
  5. 5. ÍNDICES CREADOS POR ORACLE DE MANERA AUTOMÁTICA <ul><li>Al crearse la tabla se crea: </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Un índice UNIQUE basado en B*-tree para mantener la restricción de unicidad de cada grupo de columnas que se haya declarado como único utilizando el constraint UNIQUE. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Un índice basado en hashing para mantener las filas de un grupo de tablas (“cluster”) organizado por hash. </li></ul></ul>Índices en Oracle
  6. 6. CONSIDERACIONES DE LOS ÍNDICES <ul><li>Un índice sólo es efectivo cuando es utilizado. </li></ul><ul><li>El mantenimiento de un índice tiene efecto sobre el rendimiento de las operaciones de eliminación, inserción y actualización. </li></ul><ul><li>ORACLE impone dos restricciones: </li></ul><ul><ul><li>El número máximo de columnas: Btree  32 col. Bitmap  30 col. </li></ul></ul><ul><ul><li>El espacio requerido para almacenar una clave no puede exceder la mitad del espacio disponible para almacenar datos en un bloque ORACLE </li></ul></ul>Índices en Oracle Restricciones en Oracle 8
  7. 7. REGLAS EN EL DISEÑO DE ÍNDICES <ul><li>Indexe solamente las tablas cuando las consultas no accedan a una gran cantidad de filas de la tabla. </li></ul><ul><li>No indexe tablas que son actualizadas con mucha frecuencia. </li></ul><ul><li>Indexe aquellas tablas que no tengan muchos valores repetidos en las columnas escogidas. </li></ul><ul><li>Las consultas muy complejas (en la cláusula WHERE) por lo general no toman mucha ventaja de los índices. </li></ul>Índices en Oracle
  8. 8. SINTAXIS: CREACIÓN <ul><li>Básica </li></ul><ul><ul><li>CREATE INDEX nombre_indice ON [esquema.] nombre_tabla (columna1 [, columna2, ...]) </li></ul></ul><ul><li>UNIQUE garantizan que en una tabla (o “cluster”) no puedan existir dos filas con el mismo valor. </li></ul>Índices en Oracle
  9. 9. SINTAXIS: MODIFICACIÓN <ul><li>Básica </li></ul><ul><ul><li>ALTER INDEX [schema.]index options </li></ul></ul>Índices en Oracle
  10. 10. SINTAXIS: ELIMINACIÓN <ul><li>Básica </li></ul><ul><ul><li>DROP INDEX [schema.]index [FORCE] </li></ul></ul>Índices en Oracle
  11. 11. ESTRUCTURA: B*-TREE <ul><li>Se estructura como un árbol cuya raíz contiene múltiples entradas y valores de claves que apuntan al siguiente nivel del árbol. </li></ul><ul><li>Nivel 0. </li></ul><ul><ul><li>tablas pequeñas de datos estáticos. </li></ul></ul><ul><li>Nivel 1. </li></ul><ul><ul><li>Indexa tablas dinámicas con el valor único de los identificadores de columna. </li></ul></ul><ul><li>Nivel 2. </li></ul><ul><ul><li>Indexa largas tablas o con poca cardinalidad. </li></ul></ul>Índices en Oracle
  12. 12. ESTRUCTURA: B*-TREE (GRÁFICO) Índices en Oracle
  13. 13. ESTRUCTURA: B*-TREE (CONVENIOS) <ul><li>Los siguientes convenios son utilizados para el almacenamiento en un índice basado en B*- Tree: </li></ul><ul><ul><li>En caso de que un índice no sea UNIQUE, si múltiples filas poseen el mismo valor de la clave en la estructura del índice se repetirán los valores de dichas claves. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Si la tabla no está particionada, se utilizan ROWIDs restringidos para indicar la dirección de la fila. Esto se debe a que todas las filas de la tabla no se encuentran en un mismo segmento y con esta política el índice requiere menos espacio en disco. </li></ul></ul>Índices en Oracle
  14. 14. ESTRUCTURA: BITMAP <ul><li>Son efectivos para columnas simples con poca cardinalidad, esto es muchos valores distintos. </li></ul><ul><li>Más rápidos que los B*-Tree en entornos de read-only. </li></ul><ul><li>Almacenan valores de 0 ó 1 en el ROWID. </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>create bitmap index person_region on person (region); </li></ul></ul>Índices en Oracle Row Region North East West South 1 North 1 0 0 0 2 East 0 1 0 0 3 East 0 1 0 0 4 West 0 0 1 0 5 South 0 0 0 1 6 North 1 0 0 0

×