Crear índice único usando CREATE UNIQUE INDEX en Oracle

En este artículo veremos cómo crear índice único usando CREATE UNIQUE INDEX en Oracle para mejorar la velocidad de la consultas y obtener los resultados más rápido. Si no conoces lo que es un índice puedes leer este otro artículo. Debes saber que un índice puede ser único o no único. Un índice único garantiza que no haya dos filas de una tabla con valores duplicados en la columna (o columnas) indexada. Un índice no único no impone esta restricción a los valores de la columna indexada. Si quieres crear un índice no único visita este enlace.

Sintaxis

La sintaxis para crear un índice es la siguiente:

CREATE UNIQUE INDEX nombreIndice ON 
nombreTabla(columna1[,columna2,...]);

Crear un índice único

En el siguiente ejemplo creamos un indice por el campo nombre de la tabla empleados con el resto de opciones por defecto:

CREATE UNIQUE INDEX index_emp_nombre 
ON empleados(nombre);

Si quieres comprobar si se está utilizando el índice puedes ejecutar la siguiente consulta:

EXPLAIN PLAN FOR
SELECT * FROM empleados
WHERE nombre = 'Miguel Troyano';

Ejemplo completo

Copia y pega el siguiente código en tu consola de Oracle y realiza paso a paso leyendo los comentarios.

-- www.MiguelTroyano.com
-- Borramos la tabla si existe
drop table empleados;

-- Creamos la tabla
create table empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    fecha_alta date,
    sueldo integer
);

-- Insertamos valores
insert into empleados values (1,1,'Miguel Troyano','Analista',to_date('26/09/1986','DD/MM/YYYY'),60000);
insert into empleados values (2,1,'Ismael Troyano','Analista',to_date('01/01/2001','DD/MM/YYYY'),60000);
insert into empleados values (3,1,'Jose Troyano','Alta Dirección',to_date('01/01/2001','DD/MM/YYYY'),80000);
insert into empleados values (4,1,'Pilar Redondo','Alta Dirección',to_date('02/02/2002','DD/MM/YYYY'),80000);

-- Se crea un indice llamado index_emp_nombre
--por el campo nombre de la tabla empleados
CREATE UNIQUE INDEX index_emp_nombre 
ON empleados(nombre);

-- Mostramos si la consulta utiliza algún indice
EXPLAIN 
select * 
from empleados
where nombre = 'Miguel Troyano';

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.