42 - Indice común (index) |
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).