Listado completo de tutoriales

41 - Típos de índices (create y drop)


Dijimos que hay 3 tipos de índices:

El índice llamado primary se crea automáticamente cuando establecemos un campo como clave primaria.

Los valores indexados deben ser únicos y además no pueden ser nulos. Una tabla solamente puede tener una clave primaria. Puede ser multicolumna, es decir, pueden estar formados por más de un campo.

Vamos a otro tipo de índice común. Un índice común se crea con "create index", los valores no necesariamente son únicos y aceptan valores "null". Puede haber varios por tabla.

Vamos a trabajar con nuestra tabla "libros".

 create table libros(
  codigo int not null,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar(15),
  precio decimal(6,2)
 );

Un campo por el cual realizamos consultas frecuentemente es "editorial", indexar la tabla por ese campo sería útil.

Creamos un índice:

 create index I_libros_editorial on libros(editorial);

Debemos definir un nombre para el índice (en este caso utilizamos como nomenclatura el carater I, luego el nombre de la tabla y finalmente el o los nombres del campo por el cual creamos el índice. Luego de la palabra clave on indicamos el nombre de la tabla y entre paréntesis el nombre del campo o los campos por el cual se indexa.


Veamos otro tipo de índice llamado "único". Un índice único se crea con "create unique index", los valores deben ser únicos y diferentes, aparece un mensaje de error si intentamos agregar un registro con un valor ya existente. Permite valores nulos y pueden definirse varios por tabla.

Crearemos un índice único por los campos titulo y editorial:

  create unique index I_libros_tituloeditorial on libros(titulo,editorial);

Para eliminar un índice usamos "drop index". Ejemplo:

 drop index I_libros_editorial;
 drop index I_libros_tituloeditorial;

Se elimina un índice con "drop index" seguido de su nombre.

Podemos eliminar los índices creados, pero no el creado automáticamente con la clave primaria.

Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 drop table if exists libros;
 
 create table libros(
  codigo serial,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  primary key(codigo)
 );

 -- Creamos un índice común por el campo editorial:
 create index I_libros_editorial on libros(editorial);

 -- Ahora crearemos un índice único por los campos titulo y editorial:
 create unique index I_libros_tituloeditorial on libros(titulo,editorial);

 -- Borramos los dos índices que acabamos de crear:
  drop index I_libros_editorial;
  drop index I_libros_tituloeditorial;

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin create drop index


Retornar