Índice de reconstrucción de MySQL
- Índice de reconstrucción de MySQL
-
Reconstruir
ÍNDICE
usandoREINDEX
-
Reconstruir
ÍNDICE
utilizando el métodoTABLA DE REPARACIÓN
-
Reconstruir
ÍNDICE
utilizando el métodoALTER TABLE
conInnoDB
Este tutorial demuestra cómo reconstruir índices en MySQL.
Índice de reconstrucción de MySQL
MySQL maneja tipos de datos y caracteres para que pueda haber un cambio en los índices o tablas de MySQL. Es por eso que a veces necesitamos reconstruir los índices en MySQL.
Existen algunos métodos para reconstruir los índices, y algunos de ellos repararán o reconstruirán toda la base de datos o la tabla donde solo REINDEX
es una estructura de datos en MySQL que se puede usar para reconstruir solo los índices.
Podemos usar el REINDEX
para reconstruir los índices para una o varias columnas, haciendo que la tabla funcione mejor y accediendo a los datos rápidamente.
Cada vez que una base de datos esté dañada o necesite una reparación, será necesario utilizar REINDEX
para reconstruir los índices o reparar la base de datos o la tabla.
La mayoría de los índices de MySQL, incluidos PRIMARY KEY
, UNIQUE
, INDEX
, FULLTEXT
y REINDEX
, se almacenan en los árboles B, que son árboles de estructura de datos autoequilibrados para almacenar los datos. de una manera particular.
Antes de reconstruir los índices usando el REINDEX
o reconstruir las bases de datos o tablas, primero necesitamos crear una base de datos con tablas e índices. Este tutorial demuestra diferentes métodos utilizados para reconstruir los índices en MySQL.
Crear tabla e índices
Ahora probemos un ejemplo para reconstruir los índices usando REINDEX
, pero antes de reconstruir el índice, primero tenemos que crear los índices, así que comencemos con eso.
-
Primero, la sintaxis para crear índices es:
CREATE INDEX [IndexName] ON [TableName] ([ColumnName]);
-
Ahora, creemos una tabla
create table Employee(id integer, name varchar(100), position varchar(100)); insert into Employee(id, name, position) values(1, "Sheeraz", "SeniorDeveloper"); insert into Employee(id, name, position) values(2, "John", "SeniorDeveloper"); insert into Employee(id, name, position) values(3, "Jack", "JuniorDeveloper"); select * from Employee;
El código anterior creará una tabla con tres filas y tres columnas. Ver la salida:
id name position 1 Sheeraz SeniorDeveloper 2 John SeniorDeveloper 3 Jack JuniorDeveloper
-
Para
cargo
, hay más de unSeniorDeveloper
. Podemos seleccionar los datos según la posición y también explicar eso.Ver el ejemplo:
SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper"; EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
La primera consulta seleccionará los datos donde la posición es
SeniorDeveloper
, y la segunda explicará cómo MySQL realiza eso. Ver la salida:id name 1 Sheeraz 2 John id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE Employee NULL ALL NULL NULL NULL NULL 3 33.33 Using where
-
Ahora, como podemos ver, hay más de un desarrollador senior en la tabla, por lo que creamos un índice para esa columna y luego explicamos la consulta anterior para ver la diferencia. Ver el ejemplo:
CREATE INDEX position ON Employee(Position); EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
Después de crear el índice ahora, el resultado de la consulta
explicar
es:id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE Employee NULL ref position position 403 const 1 100.00 NULL
Como podemos ver, el tipo,
possible_keys
, se cambia a laposición
después de crear el índiceposición
; también se le asigna una clave. También podemos mostrar los índices mediante la siguiente consulta:SHOW INDEXES FROM Employee;
El resultado de esta consulta es:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression Employee 1 position 1 position A NULL NULL NULL YES BTREE YES NULL
Reconstruir ÍNDICE
usando REINDEX
Ahora bien, si en cualquier caso, después de crear los índices, la base de datos o las tablas están corruptas, podemos reconstruir los índices utilizando el REINDEX
, que nos ayudará a reducir la memoria y aumentar la eficiencia de IO.
Las sintaxis para el REINDEX
son:
# To REINDEX the whole database
REINDEX DATABASE [DatabaseName];
# To REINDEX the Table
REINDEX TABLE [TableName];
# To REINDEX the Particular column
REINDEX TABLE [TableName]([ColumnName);
# To REINDEX the INDEX
REINDEX INDEX [Index_Name];
Aquí, podemos usar REINDEX
u OPTIMIZE
para reconstruir los índices dañados. Ver el ejemplo:
REINDEX TABLE Employee(position);
SHOW INDEXES FROM Employee;
O:
OPTIMIZE TABLE Employee;
SHOW INDEXES FROM Employee;
Las dos consultas anteriores reconstruirán los índices de la tabla.
Producción :
Table Op Msg_type Msg_text
test.Employee optimize status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 1 NULL NULL YES BTREE YES NULL
Reconstruir ÍNDICE
utilizando el método TABLA DE REPARACIÓN
Además de REINDEX
, también podemos reparar toda la tabla, lo que también reconstruirá los índices de la tabla. Hay una consulta simple para realizar eso.
REPAIR TABLE Employee;
SHOW INDEXES FROM Employee;
El código anterior reparará la tabla, reconstruirá los índices y luego mostrará la información de los índices. Ver la salida:
Table Op Msg_type Msg_text
test.Employee repair status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 1 NULL NULL YES BTREE YES NULL
Reconstruir ÍNDICE
utilizando el método ALTER TABLE
con InnoDB
También podemos usar la consulta ALTER TABLE
para reconstruir la tabla y los índices corruptos usando el motor InnoDB
. Aquí está la consulta simple para realizar eso.
ALTER TABLE Employee ENGINE = InnoDB;
SHOW INDEXES FROM Employee;
El código usará ALTER
para reconstruir la tabla y los índices usando el motor InnoDB
.
Producción :
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 2 NULL NULL YES BTREE YES NULL
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook