MariaDB: Índice

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MariaDB: Índice

Este tutorial de MariaDB explica cómo Crear, soltar y renombrar índices En MariaDB, con sintaxis y ejemplos.

¿Qué son los índices en MariaDB?

La indexación es un método de ajuste del rendimiento que permite una recuperación más rápida de los registros. Un índice crea una entrada para cada valor que aparece en la columna indexada.

crear índice

Hay dos formas de crear un índice. Puede crear índices cuando crea una tabla por primera vez con la declaración CREATE TABLE, o puede usar la declaración CREATE INDEX después de crear la tabla.

sintaxis

La sintaxis para crear un índice usando la instrucción CREATE TABLE en MariaDB es:

CREATE TABLE table_name
( 
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...
  column_n datatype [ NULL | NOT NULL ],

  INDEX index_name [ USING BTREE | HASH ]
    (index_col1 [(length)] [ASC | DESC], 
     index_col2 [(length)] [ASC | DESC],
     ...
     index_col_n [(length)] [ASC | DESC])
);

o

La sintaxis para crear un índice usando la instrucción CREATE INDEX en MariaDB es:

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
  [ USING BTREE | HASH ]
  ON table_name
    (index_col1 [(length)] [ASC | DESC], 
     index_col2 [(length)] [ASC | DESC],
     ...
     index_col_n [(length)] [ASC | DESC]);

Solo opcional. El modificador ÚNICO indica que la combinación de valores en la columna indexada debe ser única. Texto completo opcional. El modificador FULLTEXT indexa toda la columna y no permite prefijos. Esta opción es compatible con tablas InnoDB y MyISAM. El espacio es opcional. El modificador SPATIAL indexa toda la columna y no permite que las columnas indexadas contengan valores NULL. Esta opción es compatible con las tablas InnoDB (a partir de MariaDB 5.7) y MyISAM. index_name El nombre asignado al índice. table_name El nombre de la tabla en la que se va a crear el índice. index_col1, index_col2, … index_col_n Columnas a utilizar en el índice. La longitud es opcional. Si se especifica, solo se indexa el prefijo de la columna en lugar de la columna completa. Para columnas de cadenas no binarias, este valor es el número dado de caracteres de la columna para indexar. Para columnas de cadenas binarias, este valor es el número dado de bytes de la columna a indexar. ASC es opcional. El índice se ordena en orden ascendente por esa columna. DESC opcional. El índice se ordena en orden descendente por esa columna.

ejemplo

Veamos un ejemplo de cómo crear un índice en MariaDB utilizando la sentencia CREATE TABLE. Esta instrucción creará tanto la tabla como el índice.

Por ejemplo:

CREATE TABLE websites
( website_id INT(11) NOT NULL AUTO_INCREMENT,
  website_name VARCHAR(25) NOT NULL,
  server_name VARCHAR(20),
  creation_date DATE,
  CONSTRAINT websites_pk PRIMARY KEY (website_id),
  INDEX websites_idx (website_name)
);

En este ejemplo, hemos creado una tabla de sitio web y un índice denominado website_idx, que consta de una columna website_name.

A continuación, le mostraremos cómo crear primero la tabla y luego usar la declaración CREATE INDEX para crear el índice.

Por ejemplo:

CREATE TABLE websites
( website_id INT(11) NOT NULL AUTO_INCREMENT,
  website_name VARCHAR(25) NOT NULL,
  server_name VARCHAR(20),
  creation_date DATE,
  CONSTRAINT websites_pk PRIMARY KEY (website_id)
);

CREATE INDEX websites_idx
  ON websites (website_name);

En este ejemplo, la instrucción CREATE TABLE creará la tabla del sitio. La declaración CREATE INDEX creará un índice llamado website_idx que consiste en el campo website_name.

índice único

Para crear un índice único en una tabla, especifique la palabra clave ÚNICA al crear el índice. Nuevamente, esto se puede hacer con la declaración CREATE TABLE o la declaración CREATE INDEX.

Por ejemplo:

CREATE TABLE websites
( website_id INT(11) NOT NULL AUTO_INCREMENT,
  website_name VARCHAR(25) NOT NULL,
  server_name VARCHAR(20),
  creation_date DATE,
  CONSTRAINT websites_pk PRIMARY KEY (website_id),
  UNIQUE INDEX websites_idx (website_name, server_name)
);

o

CREATE TABLE websites
( website_id INT(11) NOT NULL AUTO_INCREMENT,
  website_name VARCHAR(25) NOT NULL,
  server_name VARCHAR(20),
  creation_date DATE,
  CONSTRAINT websites_pk PRIMARY KEY (website_id)
);

CREATE UNIQUE INDEX websites_idx
  ON websites (website_name, server_name);

Ambos ejemplos crearán índices únicos en los campos website_name y server_name, por lo que la combinación de estos campos siempre debe contener valores únicos y no duplicados. Esta es una excelente manera de hacer cumplir la integridad en la base de datos si necesita valores únicos en columnas que no forman parte de la clave principal.

índice de caída

Puede eliminar índices en MariaDB utilizando la instrucción DROP INDEX.

sintaxis

La sintaxis para eliminar un índice utilizando la instrucción DROP INDEX en MariaDB es:

DROP INDEX index_name
  ON table_name;

index_name El nombre del índice a descartar. table_name El nombre de la tabla en la que se creó el índice.

ejemplo

Veamos un ejemplo de cómo soltar un índice en MariaDB.

Por ejemplo:

DROP INDEX websites_idx
  ON websites;

En este ejemplo, eliminamos el índice denominado website_idx de la tabla de sitios web.

renombrar índice

Puede cambiar el nombre de los índices en MariaDB usando la instrucción ALTER TABLE.

sintaxis

La sintaxis para cambiar el nombre de un índice utilizando la instrucción ALTER TABLE es:

ALTER TABLE table_name
DROP INDEX index_name, ADD INDEX new_index_name [ USING BTREE | HASH ] (index_col1 [(length)] [ASC | DESC], index_col2 [(length)] [ASC | DESC], ... index_col_n [(length)] [ASC | DESC]);

table_name El nombre de la tabla en la que se creó el índice. index_name El nombre del índice para cambiar el nombre. new_index_name El nuevo nombre del índice.

ejemplo

Veamos un ejemplo de cómo renombrar un índice en MariaDB.

Por ejemplo:

ALTER TABLE websites
DROP INDEX websites_idx, ADD INDEX websites_new_index (website_name, server_name);

En este ejemplo, hemos cambiado el nombre del índice denominado website_idx a website_new_index. Esto se hace eliminando el índice anterior y luego agregando el nuevo.