Notas de estudio de MySQL. Operación de índice

Introducción a Index

Un índice es una estructura para ordenar los valores de una o más columnas en una tabla de base de datos. El uso de un índice puede acceder rápidamente a información específica en una tabla de base de datos. Si desea encontrar un empleado específico por su apellido, el índice ayuda a obtener información más rápido que buscar en todas las filas de la tabla.
Uno de los propósitos principales del índice es acelerar la recuperación de los datos en la tabla, es decir, ayudar al buscador de información a encontrar la estructura de datos auxiliares del ID de registro que cumpla con las condiciones restringidas lo antes posible.
Por ejemplo, una consulta de este tipo: seleccione * de la tabla1 donde id = 10000. Si no hay índice, debe recorrer toda la tabla hasta encontrar la fila con ID igual a 10000; después de tener un índice (debe ser un índice establecido en la columna de ID), puede buscar en el índice. Dado que el índice está optimizado por un cierto algoritmo, el número de búsquedas es mucho menor. Se puede ver que el índice se usa para posicionamiento.
-------------------------------------------------- -------------------------------------------------- ------------------------- "Enciclopedia Baidu"

Ventajas y desventajas de la creación de índices

Ventajas
1. Al diseñar una base de datos, al crear un índice único, se puede formar una relación de mapeo uno a uno entre el índice y la información, y se puede aumentar la unicidad de los datos.
2. Puede mejorar la velocidad de búsqueda y recuperación de datos, de acuerdo con la intención original de establecer una base de datos.
3. Puede acelerar la velocidad de conexión entre la mesa y la mesa, lo que juega un papel importante en la mejora de la integridad referencial de los datos.
4. En el proceso de recuperación de información, si se utilizan cláusulas de agrupación y clasificación, la indexación puede reducir efectivamente el tiempo de agrupación y clasificación requerido en el proceso de recuperación y mejorar la eficiencia de la recuperación.
5. Una vez establecido el índice, el ocultador de optimización se puede utilizar en el proceso de consulta de información, lo cual es de gran importancia para mejorar el rendimiento de todo el sistema de recuperación de información.
Desventajas
1. Se necesita tiempo para crear y mantener índices, y el tiempo consumido aumentará con el aumento de datos.
2. El índice debe ocupar espacio en el disco y el índice también ocupa una cierta cantidad de espacio físico. A medida que aumenta la cantidad de índice, el espacio ocupado aumentará aún más.
3. Cuando se agregan, eliminan y modifican los datos de la tabla, el índice también debe mantenerse, lo que reduce la velocidad de mantenimiento.

Crear índice

1. Cree un índice ordinario El
tipo de índice más básico, no hay restricciones como la unicidad, el propósito es solo acelerar la velocidad de acceso a los datos

mysql> CREATE TABLE STUDENT(
    -> ID INT PRIMARY KEY AUTO_INCREMENT,
    -> NAME CHAR(40) NOT NULL,
    -> AGE INT NOT NULL,
    -> GRADE DOUBLE,
    -> INDEX (ID)
    -> );
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW CREATE TABLE STUDENT \G
*************************** 1. row ***************************
       Table: STUDENT
Create Table: CREATE TABLE `student` (
  `ID` int(11) NOT NULL auto_increment,
  `NAME` char(40) NOT NULL,
  `AGE` int(11) NOT NULL,
  `GRADE` double default NULL,
  PRIMARY KEY  (`ID`),
  KEY `ID` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

El índice se ha creado correctamente, utilice explicar para comprobar si el índice está en uso

mysql>  EXPLAIN SELECT * FROM STUDENT WHERE ID=1 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: STUDENT
         type: const
possible_keys: PRIMARY,ID
          key: PRIMARY
      key_len: 4
          ref: const
         rows: 1
        Extra:
1 row in set (2.13 sec)

2. Cree un índice único

mysql> CREATE TABLE STUDENT(
    -> ID INT PRIMARY KEY AUTO_INCREMENT,
    -> NAME CHAR(40) NOT NULL,
    -> AGE INT NOT NULL,
    -> GRADE DOUBLE,
    -> UNIQUE INDEX UNI_INDEX (ID)
    -> );
Query OK, 0 rows affected (0.11 sec)

mysql> SHOW CREATE TABLE STUDENT \G
*************************** 1. row ***************************
       Table: STUDENT
Create Table: CREATE TABLE `student` (
  `ID` int(11) NOT NULL auto_increment,
  `NAME` char(40) NOT NULL,
  `AGE` int(11) NOT NULL,
  `GRADE` double default NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `UNI_INDEX` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)

3. Cree un índice de una
sola columna Un índice de una sola columna es un índice creado en un determinado campo de la tabla de datos, y se pueden crear varios índices de una sola columna.

mysql> drop table student;
Query OK, 0 rows affected (1.81 sec)

mysql> CREATE TABLE STUDENT(
    -> ID INT PRIMARY KEY AUTO_INCREMENT,
    -> NAME CHAR(40) NOT NULL,
    -> AGE INT NOT NULL,
    -> GRADE DOUBLE,
    -> INDEX SINGLE_INDEX(NAME(30))
    -> );
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW CREATE TABLE STUDENT \G
*************************** 1. row ***************************
       Table: STUDENT
Create Table: CREATE TABLE `student` (
  `ID` int(11) NOT NULL auto_increment,
  `NAME` char(40) NOT NULL,
  `AGE` int(11) NOT NULL,
  `GRADE` double default NULL,
  PRIMARY KEY  (`ID`),
  KEY `SINGLE_INDEX` (`NAME`(30))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

4. Cree un índice compuesto

mysql> CREATE TABLE STUDENT(
    -> ID INT PRIMARY KEY AUTO_INCREMENT,
    -> NAME CHAR(40) NOT NULL,
    -> AGE INT NOT NULL,
    -> GRADE DOUBLE,
    -> INDEX MULT_INDEX(ID,NAME,GRADE)
    -> );
Query OK, 0 rows affected (0.11 sec)

mysql> SHOW CREATE TABLE STUDENT \G
*************************** 1. row ***************************
       Table: STUDENT
Create Table: CREATE TABLE `student` (
  `ID` int(11) NOT NULL auto_increment,
  `NAME` char(40) NOT NULL,
  `AGE` int(11) NOT NULL,
  `GRADE` double default NULL,
  PRIMARY KEY  (`ID`),
  KEY `MULT_INDEX` (`ID`,`NAME`,`GRADE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

5. Cree un índice de texto completo Cree índices
solo para columnas char, varchar y text

mysql> CREATE TABLE STUDENT(
    -> ID INT PRIMARY KEY AUTO_INCREMENT,
    -> NAME CHAR(40) NOT NULL,
    -> AGE INT NOT NULL,
    -> GRADE DOUBLE,
    -> FULLTEXT INDEX FULL(NAME)
    -> )ENGINE=MyISAM;
Query OK, 0 rows affected (2.14 sec)

mysql> SHOW CREATE TABLE STUDENT \G
*************************** 1. row ***************************
       Table: STUDENT
Create Table: CREATE TABLE `student` (
  `ID` int(11) NOT NULL auto_increment,
  `NAME` char(40) NOT NULL,
  `AGE` int(11) NOT NULL,
  `GRADE` double default NULL,
  PRIMARY KEY  (`ID`),
  FULLTEXT KEY `FULL` (`NAME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (2.08 sec)

6. Cree un índice en una tabla existente.
Use alter table para crear

ALTER TABLE STUDENT ADD [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [INDEX_NAME](COL_NAME[LENGTH],...) [ASC|DESC]

Crear con crear índice

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX INDEX_NAME ON TABLE_NAME (COL_NAME[LENGTH,...]) [ASC|DESC]

Eliminar índice

1. Use alterar tabla para eliminar

alter table table_name drop index index_name;

Nota: El índice único del campo de restricción AUTO_INCREMENT agregado no se puede eliminar.
2. Utilice la declaración de índice de caída para eliminar

DROP INDEX INDEX_NAME ON TABLE_NAME;

Supongo que te gusta

Origin blog.csdn.net/qq_44862120/article/details/109174183
Recomendado
Clasificación