Date post: | 18-Feb-2018 |
Category: |
Documents |
Upload: | leandro-arge |
View: | 219 times |
Download: | 0 times |
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 1/12
Grandes volúmenes de
datosÍndices B-Tree en Oracle
bases de datos
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 2/12
Índices B-Tree en Oracle
Tipo de índice por defecto El de uso más común Su estructura de almacenamiento es en árboles B Para que sea eficiente el sistema de garantizar
que esos Arboles estén ordenados y equilibrados-> coste computacional si tienen muchas operaciones de inserción, borrado o modificación
Pueden ocupar gran cantidad de espacio
2
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 3/12
Índices B-Tree en Oracle
3
Gráficamente y como aproximación conceptual ( en la práctica pueden ser más complejos)
En cada nodo tendremos los punteros (rowiden caso de oracle) de los registros accesiblepor el valor de ese índice.
En cada página hoja tenemos un puntero ala siguiente (recorrido secuencial)
En este ejemplo solo tenemos un nivel peroen la práctica pueden ser varios, encualquier caso el número necesario deacceso para recuperar la información sereduce de forma exponencial
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 4/12
Índices B-Tree en Oracle
Sintaxis
4
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 5/12
Índices B-Tree en Oracle
Esquema◦ Nombre del esquema que contiene el índice◦ Si se omite se considera el esquema del usuario
Indice◦ Nombre del índice a crear
Tabla◦ Nombre de la tabla sobre la que se desea crear elíndice
Columna◦ Nombre de la columna(s) sobre las que se define el
índice◦ Si el índice es compuesto, el orden de las columnases importante
◦ ASC o DESC indica el orden que tendrán dentro delárbol
5
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 6/12
Índices B-Tree en Oracle
Ejemplos
6
CREATE INDEX idx_cif_empr
ON empresas (cif_empr) ;
CREATE INDEX idx_nomb_empr
ON empresas (nomb_empr) ;
CREATE INDEX idx_cif_nomb_empr
ON empresas (cif_empr, nomb_empr) ;
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 7/12
Índices B-Tree en Oracle
7
Esta es la sintaxis básica que se puede enriquecer de forma muy extensa medianteparámetros físicos de almacenamiento y/o comportamiento que pueden incrementar su
eficiencia
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 8/12
Índices B-Tree en Oracle
8
CREATE UNIQUE INDEX PK_EMPR_CIF_EMPR ON EMPRESAS
(CIF_EMPR)
TABLESPACE INDICES_APP
PCTFREE 10
INITRANS 2MAXTRANS 255
STORAGE (
INITIAL 500K
NEXT 1M
PCTINCREASE 20
MAXEXTENTS 1000
)
Ejemplo
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 9/12
Índices B-Tree en Oracle
Empresas (cif, nombre, direccion, cpostal, poblacion, provincia, usuario)CP: cifUn: usuario
Pedidos (numpedido, fecha, estado, importe, empresa)CP: numpedido
CAj: empresa -> Empresas.cifExpedientes (numexpe, numpedido, servicios)
CP: numexpe, numpedidoCAj: numpedido -> Pedidos.numpedido
Eventos (nombre, descripcion)CP: nombre
Ejecución (numpedido, evento, fecha)CP: numpedido, eventoCAj: numpedido -> Expediente.numpedidoCAj: evento -> Eventos.nombre
9
Nuestro ejemplo de clase
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 10/12
Índices B-Tree en Oracle
10
Nuestro ejemplo de clase
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 11/12
Índices B-Tree en OracleCREATE TABLE EMPRESAS(CIF_EMPR VARCHAR2(10 BYTE),NOMB_EMPR VARCHAR2(60 BYTE),DIRE_EMPR VARCHAR2(40 BYTE),CPOS_EMPR CHAR(5 BYTE),POBL_EMPR VARCHAR2(20 BYTE),PROV_EMPR VARCHAR2(15 BYTE),USUA_EMPR VARCHAR2(10 BYTE) )
CREATE UNIQUE INDEX
PK_EMPR_CIF_EMPRON EMPRESAS (CIF_EMPR)
CREATE UNIQUE INDEXUQ_EMPR_USUA_EMPR
ON EMPRESAS (USUA_EMPR)
ALTER TABLE EMPRESAS ADD (
CONSTRAINT PK_EMPR_CIF_EMPRPRIMARY KEY (CIF_EMPR)USING INDEX PK_EMPR_CIF_EMPR,CONSTRAINT UQ_EMPR_USUA_EMPRUNIQUE (USUA_EMPR)USING INDEX UQ_EMPR_USUA_EMPR)
11
Son equivalentes, aunque no se especifique
Se crean índices únicos para gestionarlas PK y la UQ
CREATE TABLE EMPRESAS(
CIF_EMPR VARCHAR2(10 BYTE),NOMB_EMPR VARCHAR2(60 BYTE),DIRE_EMPR VARCHAR2(40 BYTE),CPOS_EMPR CHAR(5 BYTE),POBL_EMPR VARCHAR2(20 BYTE),PROV_EMPR VARCHAR2(15 BYTE),USUA_EMPR VARCHAR2(10 BYTE) ,
Constraint PK_EMPR_CIF_EMPRPRIMARY KEY (CIF_EMPR),
Constraint UQ_EMPR_USUA_EMPRUNIQUE (USUA_EMPR))
7/23/2019 02_BBDD.GVD.BTree
http://slidepdf.com/reader/full/02bbddgvdbtree 12/12
Índices B-Tree en Oracle
Ejercicio◦ Suponiendo que tenemos un numero no muy alto
de empresas y no muy alto de eventos posibles
pero con una cantidad enorme de pedidos (quesolo pueden tener dos estados), localiza en elesquema columnas para las que crearías índicesB-tree
◦ Escribe las sentencias para los índices que hasidentificado
12