Académique Documents
Professionnel Documents
Culture Documents
Lgica Una columna o concatenado: Una sola o varias columnas clave Unico o no nico: Permite o no valores duplicados en la clave Basado en funciones: Basado en funciones sobre una o ms columnas de la tabla.
Mecanismo eficiente para evaluar consultasque contienen funciones en su clusula WHERE CREATE INDEX cantidad_a_despachar_idx ON item(cantidad - cantidad_despachada); SELECT orden.id, item.id FROM item WHERE (cantidad - cantidad_despachada) > 0;
2
Fsica
Almacenamiento de ndices
Cuando se crea un ndice se asigna automticamente un segmento de ndice. Se puede administrar el espacio de un segmento de ndice de la siguiente forma:
Especificando los parmetros de almacenamiento relacionados con la asignacin de extents Especificando el parmetro PCTFREE
Se puede asignar un tablesape diferente al tablespace de los datos, mejorando as el desempeo. Cuando se crea el ndice, el DBMS hace sort sobre las columnas del ndice y almacena el rowid y el valor del ndice para cada fila.
4
Se pueden crear tantos ndices sobre las tablas como combinaciones de columnas diferentes existan. Se puede crear un ndice sobre el mismo conjunto de columnas, si las mismas estn ordenadas de forma diferente. No se pueden crear dos ndices sobre el mismo atributo. Se puede borrar un ndice sin alterar los datos de la tabla de datos.
Oracle crea automaticamente: 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 las columnas sobre las que se defini 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.
6
B-Tree Index
Index entry Root
Branch
Index entry header Leaf Key column length Key column value ROWID
B C Cr
F H Kar
N P Ph
Sam St Su
Luis, ROWID Mark, ROWID Mary, ROWID Mike, ROWID Mike, ROWID
Formato de bloques internos o ramas l prefijo mnimo de clave necesario para poder ramificar E puntador al hijo que contiene la clave A loques con n claves, tienen n+1 apuntadores B l nmero de claves y apuntadores est determinado por el tamao del bloque E
10
11
12
ndices y nulos
Oracle ignora los registros donde todas las entradas son nulos. CREATE INDEX IDX1 ON EMPLOYEE(NVL(ename,null)
Indices Bitmap
e tiene un bitmap para cada valor de la clave en vez de una lista de S rowids. ada bit del mapa corresponde a un rowid. Si el bit est prendido C significa que la fila con el rowid correspondiente contiene el valor de la clave. na funcin de mapping convierte la posicin del bit a un rowid. U
14
Indices Bitmap
Tienen ventajas sobre los ndices de Arboles B cuando: l nmero de valores diferentes de la clave es bajo y el nmero de tuplas E alto, son muy eficientes en espacio. Ejemplo, el campo estado civil en una tabla de personas. as consultas usan combinaciones de mltiples condiciones WHERE L ay actividad de read-only o poca actividad de actualizacin en las H columnas clave. Cuando hay actualizaciones de la clave , se debe modificar el bitmap y se bloquean todos los registros cubiertos por el bitmap. La estructura es:
Un header del entry que contiene el nmero de columnas e informacin de locks Los pares longitud,valor de cada columna de la clave Start ROWID End ROWID Segmento de bitmap que consiste de un string de bits
15
Indices Bitmap
Table File 3 Block 10 Block 11 Index Block 12
bitmap
1000100100010010100> 0001010000100100000> 0100000011000001001> 0010001000001000010>
COMPUTE STATISTICS
Bitmap
Apropiados para columnas con baja cardinalidad identificada Actualizaciones de claves muy costosas
Ineficiente para queries que utilizan predicados OR Util para aplicaciones OLTP Para columnas en donde se consulta menor que o mayor que
Eficiente para queries que utilizan predicados OR Util para aplicaciones de data warehousing con consultas ad hoc Apropiado para consultas AND,OR,NOT o de igualdad
22
CREATE INDEX employees_global_part_idx ON employees(employee_id) GLOBAL PARTITION BY RANGE(employee_id) (PARTITION p1 VALUES LESS THAN(5000), PARTITION p2 VALUES LESS THAN(MAXVALUE));
900, 901,
< 1000
1000, 1001,
< MAXVALUE
900, 1000,
901, 1001,
create index upper_full_name on customer ( upper(full_name)); select full_name from customer where upper(full_name) = 'DON BURLESON';
Indices Reverse
Invierte los bytes en cada columna indexada. Evita la degradacin del desempeo cuando las modificaciones sobre los ndices estn concentradas en una pequea parte de las hojas del rbol. No son buenos para bsqueda por rango.