+ All Categories
Home > Documents > 02_BBDD.GVD.BTree

02_BBDD.GVD.BTree

Date post: 18-Feb-2018
Category:
Upload: leandro-arge
View: 219 times
Download: 0 times
Share this document with a friend
12
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
Transcript
Page 1: 02_BBDD.GVD.BTree

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

Page 2: 02_BBDD.GVD.BTree

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

Page 3: 02_BBDD.GVD.BTree

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

Page 4: 02_BBDD.GVD.BTree

7/23/2019 02_BBDD.GVD.BTree

http://slidepdf.com/reader/full/02bbddgvdbtree 4/12

Índices B-Tree en Oracle

Sintaxis

4

Page 5: 02_BBDD.GVD.BTree

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

Page 6: 02_BBDD.GVD.BTree

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) ; 

Page 7: 02_BBDD.GVD.BTree

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

Page 8: 02_BBDD.GVD.BTree

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

Page 9: 02_BBDD.GVD.BTree

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

Page 10: 02_BBDD.GVD.BTree

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

Page 11: 02_BBDD.GVD.BTree

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))

Page 12: 02_BBDD.GVD.BTree

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