Listado completo de tutoriales
- Indice común (index) |
Dijimos que hay 3 tipos de índices. Hasta ahora solamente conocemos la clave primaria que definimos al momento de crear una tabla.
Vamos a ver el otro tipo de índice, común. Un índice común se crea con "index", los valores no necesariamente son únicos y aceptan valores "null". Puede haber varios por tabla.
Vamos a trabajar con nuestra tabla "libros".
Un campo por el cual realizamos consultas frecuentemente es "editorial", indexar la tabla por ese campo sería útil.
Creamos un índice al momento de crear la tabla:
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) );
Luego de la definición de los campos colocamos "index" seguido del nombre que le damos y entre paréntesis el o los campos por los cuales se indexará dicho índice.
"show index" muestra la estructura de los índices:
show index from libros;
Si no le asignamos un nombre a un índice, por defecto tomará el nombre del primer campo que forma parte del índice, con un sufijo opcional (_2,_3,...) para que sea único.
Ciertas tablas (MyISAM, InnoDB y BDB) soportan índices en campos que permiten valores nulos, otras no, debiendo definirse el campo como "not null".
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) );
Para crear índices por múltiple campos se listan los campos dentro de los paréntesis separados con comas. Los valores de los índices se crean concatenando los valores de los campos mencionados.
Recuerde que "index" es sinónimo de "key".Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL para probar un índice común:
drop table if exists libros; 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) ); show index from libros;
Genera una salida similar a esta: