Вы находитесь на странице: 1из 7

Definicin de ndice qu es un ndice? para qu sirve?

El ndice de una base de datos es una estructura de datos que mejora la velocidad de las
operaciones, permitiendo un rpido acceso a los registros de una tabla. Al aumentar
drsticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se
vayan a realizar bsquedas frecuentes.
El ndice tiene un funcionamiento similar al ndice de un libro, guardando parejas de elementos:
el elemento que se desea indexar y su posicin en la base de datos. Para buscar un elemento
que est indexado, slo hay que buscar en el ndice de dicho elemento para, una vez
encontrado, devolver el registro que se encuentre en la posicin marcada por el ndice.
Los ndices pueden ser creados usando una o ms columnas, preparando la base de datos tanto
para bsquedas rpidas al azar como para ordenaciones eficientes de los registros.
Los ndices son construidos sobre rboles B, B+, B* o sobre una mezcla de ellos, funciones de
clculo u otros mtodos.
El espacio en disco requerido para almacenar el ndice es tpicamente menor que el espacio de
almacenamiento de la tabla (puesto que los ndices generalmente contienen solamente los
campos clave de acuerdo con los que la tabla ser ordenada, y excluyen el resto de los detalles
de la tabla), lo que da la posibilidad de almacenar en memoria los ndices de tablas que no
cabran en ella. En una base de datos relacional un ndice es una copia de parte de una tabla.
Cmo crear ndices en Oracle
Creacin de un ndice al crear una tabla de Oracle
Para crear un ndice en la creacin de una tabla de Oracle podemos utilizar SQL*Plus
(herramienta de lnea de comandos incluida con Oracle), se puede utilizar tambin Oracle
Enterprise Manager (modo grfico) o una aplicacin externa que permita acceso a Oracle, como
por ejemplo:
AjpdSoft Administracin Bases de Datos
Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de
datos, nombre de usuario, contrasea, tipo de acceso):

Crearemos una tabla para el ejemplo de creacin de ndices


ejecutando la siguiente consulta SQL:
CREATE TABLE facturacion (
codigo number(10) not null,
fecha date default sysdate,
codigocliente number(10),
nombrecliente varchar(100),
observacion varchar(2000),
constraint pk_facturacion_codigo primary key (codigo)
) tablespace USERS
Como se puede observar en la consulta SQL anterior, al aadir la
lnea:
constraint pk_facturacion_codigo primary key (codigo)

Estamos indicando a Oracle que cree la tabla "facturacion", con el campo "codigo" y que ste
sea clave primaria, por lo que crear un ndice automticamente para este campo. Esta es una
forma de crear ndices, en la creacin de la tabla:

Tras crear la tabla insertaremos algunos registros con


la instruccin SQL:
insert into facturacion
(codigo, codigocliente, nombrecliente)
values (1, 50, 'AjpdSoft')

Puesto que hemos indicado que la columna "codigo" sea clave primaria, Oracle no permitir
valores duplicados para esta columna, esta comprobacin la realizar basndose en el ndice
creado. Si intentamos agregar un nuevo registro con con el valor de "codigo" a "1" (que ya
existe) nos mostrar este error:

Con el texto: ORA-00001: restriccin nica


(SYSTEM.PK_FACTURACION_CODIGO) violada,
indicando que la restriccin
nicaPK_FACTURACION_CODIGO no se ha cumplido
por lo que no dejar insertar el registro.
Insertaremos varios registros (cambiando el valor
de "codigo"). Ejecutando la consulta SQL:
select * from facturacion
Podremos ver los registros insertados en la tabla "facturacion":

Para ver el ndice creado se puede utilizar esta


consulta.
Crear un ndice en una tabla ya existente en
Oracle
La creacin de un ndice en Oracle se realiza
mediante el comando create index. Cuando se
define una clave primaria o una columna unvoca
(UNIQUE) durante la creacin de una tabla o su
mantenimiento, Oracle crear automticamente un ndice de tipo UNIQUE que gestione dicha
restriccin, como hemos indicado anteriormente. La sintaxis completa de create index es la
siguiente:

create [bitmap | unique] index nombre_indice on


nombre_tabla (nombre_columna [, nombre_columna2] ...) [reverse];

bitmap indica que se cree un ndice de mapa de bits que permite crear ndices en
columnas con muy pocos valores diferentes.

unique indica que el valor de la o las columnas indexadas debe ser nico, no puede haber
duplicidades.

nombre_indice debe ser un nombre unvoco (no debe existir otro nombre de objeto en
Oracle) que siga los convenios de denominacin de Oracle para nombrar columnas.

nombre_tabla ser el nombre de la tabla donde se crear el ndice.

nombre_columna (o columnas) ser la columna de la tabla nombre_tabla en la que se


crear el ndice. Se puede crear un ndice para varias columnas.

reverse indica a Oracle que invierta los bytes del valor indexado, lo que puede mejorar la
distribucin del procesamiento y de los datos cuando se insertan muchos valores de datos
secuenciales.

Para crear un ndice en Oracle podemos utilizar SQL*Plus (herramienta de lnea de comandos
incluida con Oracle), se puede utilizar Oracle Enterprise Manager (modo grfico) o una aplicacin
externa que permita acceso a Oracle, como por ejemplo:
AjpdSoft Administracin Bases de Datos
Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de
datos, nombre de usuario, contrasea, tipo de acceso):

Siguiendo con el ejemplo, aadiremos un ndice normal para la


columna "nombrecliente" de la tabla "facturacion". Para ello
ejecutaremos la siguiente consulta SQL:
create index IN_FACTURACION_NOMBRECLIENTE
on FACTURACION (NOMBRECLIENTE)

Para ver el ndice creado podemos ejecutar la siguiente


consulta SQL (como
indicamos aqu):
select index_name
table_name Tabla,
Tablespace,
secondary Secundario
from all_indexes
where table_name =

Nombre, index_type Tipo,


tablespace_name

'FACTURACION'

Para aadir un ndice de tipo UNIQUE, obligando a que los valores del campo indexado sean
unvocos, no se puedan repetir en el campo de la tabla, ejecutaremos la siguiente sentencia SQL:

create unique index


IN_FACTURACION_COD_CODCLI_FE
on FACTURACION (CODIGOCLIENTE, FECHA)

De
esta
forma

Oracle no permitir que haya dos registros en la


tabla
"facturacion" con el mismo valor en los campos "codigocliente" y "fecha", es decir, slo podr
aadirse una factura por cliente y por da, un cliente no podr tener dos facturas en un mismo
da. Por ejemplo, si insertamos este registro:
insert into facturacion
(codigo, codigocliente, fecha)
values (6900, 500, to_date('31/12/2009', 'DD-MM-YYYY'))
Intentaremos insertar un segundo registro con el mismo valor en codigocliente y en fecha:
insert into facturacion
(codigo, codigocliente, fecha)
values (6910, 500, to_date('31/12/2009', 'DD-MM-YYYY'))
Oracle detectar que se est intentando infringir una restriccin nica, por lo que mostrar el
siguiente mensaje de error y no dejar que se inserte el registro:

Con el texto: ORA-00001: restriccin nica (SYSTEM.IN_FACTURACION_COD_CODCLI_FE) violada


http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=449

ON DELETE CASCADE
El uso de una restriccin de integridad referencial es hacer cumplir que cada registro hijo tiene
un padre.
SQL> CREATE TABLE DEPT
2
(DEPTNO NUMBER PRIMARY KEY,
3
DNAME VARCHAR2(10)) ;
Table created.
SQL> CREATE TABLE EMP
2
(EMPNO NUMBER PRIMARY KEY,
3
ENAME VARCHAR2(10),
4
DEPTNO NUMBER
5
CONSTRAINT EMP_DEPT_FK
6
REFERENCES DEPT(deptno));
Table created.
SQL> INSERT INTO DEPT(deptno,dname) VALUES
2
(50,'CREDIT');
1 row created.
SQL> INSERT INTO EMP(EMPNO,ENAME,DEPTNO) VALUES
2
(9999,'JOEL',50);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> DELETE DEPT WHERE DEPTNO=50;
DELETE DEPT WHERE DEPTNO=50
*
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.EMP_DEPT_FK) violated
- child record found

No puedo borrar este departamento, debido a que el departamento no est


vaca. Afortunadamente
Vamos a redefinir la restriccin con una clusula DELETE CASCADE
SQL> alter table emp drop constraint emp_dept_fk;
Table altered.
SQL> alter table emp add constraint emp_dept_fk
2 foreign key (deptno) references dept(deptno)
3 on delete cascade;
Table altered.
SQL> DELETE DEPT WHERE DEPTNO=50;

1 row deleted.
SQL> select * from emp where ename='JOEL';
no rows selected

Observe la lnea fila 1 eliminado. Este es el mal he borrado un departamento, y haba


empleados en ella, pero tengo ningn error, sin advertencia y sin retroalimentacin acerca de la
DELETE EMP.
En lugar de mejorar la calidad de los datos, la ON DELETE CASCADE restriccin de clave externa
aqu filas eliminadas en silencio. Joel ser una vez que llamar y preguntar por qu l ha sido
borrado ...
Hay una clusula de ms de la clave externa que establece la columna de la refering a null
SQL> INSERT INTO DEPT(deptno,dname) VALUES
2
(60,'RESTAURANT');
1 row created.
SQL> INSERT INTO EMP(EMPNO,ENAME,DEPTNO) VALUES
2
(9998,'MARC',60);
1 row created.
SQL> alter table emp drop constraint emp_dept_fk;
Table altered.
SQL> alter table emp add constraint emp_dept_fk
2 foreign key (deptno) references dept(deptno)
3 on delete set null;
Table altered.
SQL> DELETE DEPT WHERE DEPTNO=60;
1 row deleted.
SQL> select * from emp where ename='MARC';
EMPNO ENAME
DEPTNO
---------- ---------- ---------9998 MARC

Marc no tiene departamento, debido a que su departamento ha sido eliminado. Una vez ms,
no hay comentarios, sin previo aviso, sin error.
En lugar de mejorar la calidad de los datos, la ON DELETE SET NULL restriccin de clave
externa aqu columnas filas en silencio actualizados a NULL. Marc se preguntar por qu no
obtiene invitacin a las reuniones de departamento.

Qu podra ser peor ???


Dispara por supuesto! Dispara no slo elimina filas en tablas secundarias, pero los
disparadores tambin pueden hacer cosas muy extraas, como la actualizacin de otra
tabla, el cambio de los valores que estn tratando de insertar, outputing un mensaje, etc.
Tambin desencadena estn programados por sus compaeros, por lo que debe estar lleno
de bichos
No te puedes imaginar la cantidad de problemas que son causados por factores
desencadenantes y revelan slo cuando el rastreo.
Una vez tuve algo as como

SQL> CREATE INDEX I ON T(X);


P07431B processed

http://laurentschneider.com/wordpress/2007/08/on-delete-cascade.html

Вам также может понравиться

  • Enhorabuena PDF
    Enhorabuena PDF
    Документ9 страниц
    Enhorabuena PDF
    Wilson Escalona
    Оценок пока нет
  • Report
    Report
    Документ2 страницы
    Report
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Entrega Semana 4
    Entrega Semana 4
    Документ9 страниц
    Entrega Semana 4
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Historia Unix
    Historia Unix
    Документ2 страницы
    Historia Unix
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Aplicación gestión presupuestos tienda computación
    Aplicación gestión presupuestos tienda computación
    Документ10 страниц
    Aplicación gestión presupuestos tienda computación
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Metodo Biseccion
    Metodo Biseccion
    Документ8 страниц
    Metodo Biseccion
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Usuarios Grupo S
    Usuarios Grupo S
    Документ7 страниц
    Usuarios Grupo S
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Enhorabuena PDF
    Enhorabuena PDF
    Документ9 страниц
    Enhorabuena PDF
    Wilson Escalona
    Оценок пока нет
  • FTP Ubuntu
    FTP Ubuntu
    Документ3 страницы
    FTP Ubuntu
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Model
    Model
    Документ1 страница
    Model
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Entrega Unidad 3 DML
    Entrega Unidad 3 DML
    Документ4 страницы
    Entrega Unidad 3 DML
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Uml
    Uml
    Документ33 страницы
    Uml
    Yilmer Andres Castro Bedoya
    Оценок пока нет
  • Entrega Is Unidad 3
    Entrega Is Unidad 3
    Документ20 страниц
    Entrega Is Unidad 3
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Funcion Norm Matlab
    Funcion Norm Matlab
    Документ3 страницы
    Funcion Norm Matlab
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Requisitos y Pasos
    Requisitos y Pasos
    Документ1 страница
    Requisitos y Pasos
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Reporte de Los Programas
    Reporte de Los Programas
    Документ12 страниц
    Reporte de Los Programas
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Insercion de Datos Comercio
    Insercion de Datos Comercio
    Документ11 страниц
    Insercion de Datos Comercio
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Taller de BD Apuntes
    Taller de BD Apuntes
    Документ3 страницы
    Taller de BD Apuntes
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • O ISIC-2010-224 Taller de Bases de Datos
    O ISIC-2010-224 Taller de Bases de Datos
    Документ14 страниц
    O ISIC-2010-224 Taller de Bases de Datos
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Preguntas LaboratorioComputo
    Preguntas LaboratorioComputo
    Документ3 страницы
    Preguntas LaboratorioComputo
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Punto Fijo
    Punto Fijo
    Документ6 страниц
    Punto Fijo
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Raices V 1.2
    Raices V 1.2
    Документ6 792 страницы
    Raices V 1.2
    Jonathan Valencia
    Оценок пока нет
  • Tabla de Calores y Temperat
    Tabla de Calores y Temperat
    Документ1 страница
    Tabla de Calores y Temperat
    Israel Grover Condorcet Mancilla
    Оценок пока нет
  • Iniciativa Reforma Constitucional Telecom
    Iniciativa Reforma Constitucional Telecom
    Документ52 страницы
    Iniciativa Reforma Constitucional Telecom
    animalpolitico
    Оценок пока нет
  • LG
    LG
    Документ2 страницы
    LG
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Instalacion Win POSTGRESQL
    Instalacion Win POSTGRESQL
    Документ26 страниц
    Instalacion Win POSTGRESQL
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Telecomunicaciones
    Telecomunicaciones
    Документ3 страницы
    Telecomunicaciones
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • INTEC Laboratorio Ejercicios Programación
    INTEC Laboratorio Ejercicios Programación
    Документ18 страниц
    INTEC Laboratorio Ejercicios Programación
    blonde117
    Оценок пока нет
  • INTEC Laboratorio Ejercicios Programación
    INTEC Laboratorio Ejercicios Programación
    Документ18 страниц
    INTEC Laboratorio Ejercicios Programación
    blonde117
    Оценок пока нет
  • Práctica # 2 Consultas de Selección Con Operadores Aritméticos
    Práctica # 2 Consultas de Selección Con Operadores Aritméticos
    Документ3 страницы
    Práctica # 2 Consultas de Selección Con Operadores Aritméticos
    sergiogonzalezperez
    Оценок пока нет
  • Querys
    Querys
    Документ6 страниц
    Querys
    Jonathan Rojas
    Оценок пока нет
  • Cuadro Comparativo de Gestores BD
    Cuadro Comparativo de Gestores BD
    Документ8 страниц
    Cuadro Comparativo de Gestores BD
    Carlos Alberto Giraldo Muñoz
    Оценок пока нет
  • BD1 Trabajo Final
    BD1 Trabajo Final
    Документ2 страницы
    BD1 Trabajo Final
    JHOALI ISRRAEL PACHECO FALCONI
    Оценок пока нет
  • Guia de Trabajo Aplicativo 1
    Guia de Trabajo Aplicativo 1
    Документ6 страниц
    Guia de Trabajo Aplicativo 1
    Heydi Urbina
    Оценок пока нет
  • Aranza Gutierrez Mora - T12
    Aranza Gutierrez Mora - T12
    Документ3 страницы
    Aranza Gutierrez Mora - T12
    ARANZA GUTIERREZ MORA
    0% (1)
  • DB2 Clase 04 DDL
    DB2 Clase 04 DDL
    Документ101 страница
    DB2 Clase 04 DDL
    Alejandro Daniel Solodujin
    Оценок пока нет
  • EQUIPO
    EQUIPO
    Документ3 страницы
    EQUIPO
    BRIAN NOE DIAZ CERVERA
    Оценок пока нет
  • Inbound 2855672859312194787
    Inbound 2855672859312194787
    Документ15 страниц
    Inbound 2855672859312194787
    chicolove9
    Оценок пока нет
  • Relaciones y Consultas
    Relaciones y Consultas
    Документ9 страниц
    Relaciones y Consultas
    Edgardo Tabora
    Оценок пока нет
  • Base de datos: Capacitación
    Base de datos: Capacitación
    Документ4 страницы
    Base de datos: Capacitación
    Jeffrey Olazo
    Оценок пока нет
  • Características Básicas SGDB
    Características Básicas SGDB
    Документ18 страниц
    Características Básicas SGDB
    Arles Em
    Оценок пока нет
  • Bloques en PL - SQL
    Bloques en PL - SQL
    Документ24 страницы
    Bloques en PL - SQL
    RAIN5136106082
    Оценок пока нет
  • Tarea#6
    Tarea#6
    Документ5 страниц
    Tarea#6
    edith
    Оценок пока нет
  • Guia SQL (Lenguaje de Consulta Estructurada)
    Guia SQL (Lenguaje de Consulta Estructurada)
    Документ26 страниц
    Guia SQL (Lenguaje de Consulta Estructurada)
    Andrea Gomez Hoyos
    Оценок пока нет
  • Examen - Base de Datos
    Examen - Base de Datos
    Документ16 страниц
    Examen - Base de Datos
    Karwlyna Kwayntiru
    Оценок пока нет
  • Ejercicios Resueltos
    Ejercicios Resueltos
    Документ28 страниц
    Ejercicios Resueltos
    Miguel Duarte Cordeiro Magalhaes
    Оценок пока нет
  • Álgebra Relacional
    Álgebra Relacional
    Документ7 страниц
    Álgebra Relacional
    Moises Hernandez Marquez
    Оценок пока нет
  • Acceso A Datos en Visual Studio Part1
    Acceso A Datos en Visual Studio Part1
    Документ19 страниц
    Acceso A Datos en Visual Studio Part1
    Hugo Zanatta Solano
    Оценок пока нет
  • Presentacion - Subconsultas
    Presentacion - Subconsultas
    Документ32 страницы
    Presentacion - Subconsultas
    Basto Olaya Carlos Alfonso
    Оценок пока нет
  • 5 PDF
    5 PDF
    Документ3 страницы
    5 PDF
    Chanel Estebe
    Оценок пока нет
  • Bacelina PDF
    Bacelina PDF
    Документ11 страниц
    Bacelina PDF
    Lntrainer Bodybuilder
    Оценок пока нет
  • Ejercicios SQL bases datos
    Ejercicios SQL bases datos
    Документ4 страницы
    Ejercicios SQL bases datos
    AdánCandeasMozo
    Оценок пока нет
  • Mysql El Motor de Base de Datos
    Mysql El Motor de Base de Datos
    Документ65 страниц
    Mysql El Motor de Base de Datos
    mc1975
    100% (1)
  • Valores Null (Is Null) PDF
    Valores Null (Is Null) PDF
    Документ18 страниц
    Valores Null (Is Null) PDF
    SEBASTIAN ALEXANDER ZAPATA ZAPATA
    Оценок пока нет
  • Practica 5 Select 1
    Practica 5 Select 1
    Документ3 страницы
    Practica 5 Select 1
    Franciscodlx
    Оценок пока нет
  • Tema2 PDF
    Tema2 PDF
    Документ9 страниц
    Tema2 PDF
    Rudy Q.Vargas
    Оценок пока нет
  • Algebra Relacional
    Algebra Relacional
    Документ13 страниц
    Algebra Relacional
    Cesar Picuasi
    Оценок пока нет
  • Postgresql, Informe.
    Postgresql, Informe.
    Документ24 страницы
    Postgresql, Informe.
    Cronicas de una Lectora Venezolana
    Оценок пока нет
  • Crear BD calcular bonificaciones empleados
    Crear BD calcular bonificaciones empleados
    Документ3 страницы
    Crear BD calcular bonificaciones empleados
    Vilchez Jose
    Оценок пока нет