42 - Indice común (index)


Problema:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe.

Creamos la tabla "libros" con 2 índices:

 - una clave primaria (codigo),
 - un índice común por el campo "editorial",
 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  primary key(codigo),
  index i_editorial (editorial)
 );

Analicemos la estructura de los índices:

 show index from libros;

Analicemos esta información:

Table	Non_unique	Key_name	Column_name	Null
______________________________________________________________
libros		0	PRIMARY		codigo		
libros		1	i_editorial	editorial	YES

Vemos que la tabla tiene 2 índices, uno de ellos corresponde a la clave primaria (codigo) que se creó automáticamente al definir el campo "código" como clave primaria; el otro es el que creamos con "index" llamado "i_editorial".

La columna "Table" indica de qué tabla estamos visualizando los índices.

La columna "Non_unique" indica si los valores son "no únicos"; para el índice creado por la clave primaria indica "false" (0), significa que SON únicos, no hay valores repetidos para ese campo (recuerde lo aprendido sobre clave primaria); para el índice "i_editorial" indica "true" (1), es decir, NO son únicos, hay valores repetidos.

La columna "Key_name" muestra el nombre del índice; para el campo correspondiente a la clave primaria tomó el nombre "PRIMARY"; el otro nombre es el que le dimos nosotros al definirlo (i_editorial).

La columna "Column_name" muestra el nombre del campo por el que está ordenado el índice, "codigo" para el índice "PRIMARY" y "editorial" para nuestro índice.

La columna "Null" indica si permite valores nulos; el índice "PRIMARY" no los permite (recuerde lo aprendido sobre clave primaria), el índice "i_editorial" si los permite (aparece YES).

Las demás columnas no serán explicadas por el momento.

Se pueden crear índices por varios campos:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  primary key(codigo),
  index i_tituloeditorial (titulo,editorial)
 );

Note que los campos se listan entre paréntesis separados por comas.

Veamos la información de los índices:

 show index from libros;

Analicemos esta información:

Table	Non_unique	Key_name	Seq_in_index	Column_name	Null
____________________________________________________________________________
libros		0	PRIMARY			1	codigo
libros		1	i_tituloeditorial	1	titulo		
libros		1	i_tituloeditorial	2	editorial	YES

Aparecen 3 filas.

La tabla tiene 2 índices (2 filas corresponden al mismo índice): uno de ellos corresponde a la clave primaria (codigo) que se creó automáticamente al definir el campo "código" como clave primaria; el otro es el que creamos con "index" llamado "i_tituloeditorial".

El índice "PRIMARY", no tiene valores repetidos (No es "No único"); el índice "i_tituloeditorial" es "No único", o sea, hay valores repetidos.

La columna "Seq_in_index" y "Column_name" muestran la secuencia de la indexación para cada campo. En el índice "i_tituloeditorial" y el campo "titulo" muestra 1 y para el campo "editorial" muestra 2, esto significa que está indexado en ese orden.

La columna "Null" indica si el campo permite valores nulos; el índice "PRIMARY" no los permite; el campo "titulo" del índice "i_tituloeditorial" no los permite (recuerde que lo definimos "not null"), el campo "editorial" si los permite (YES).




Retornar