MySQL-Rebuild-Index
- MySQL-Rebuild-Index
-
INDEXESmitREINDEXneu erstellen -
Erstellen Sie
INDEXESmit derREPAIR TABLE-Methode neu -
INDEXESmit derALTER TABLE-Methode mitInnoDBneu erstellen
Dieses Tutorial zeigt, wie Sie Indizes in MySQL neu erstellen.
MySQL-Rebuild-Index
MySQL handhabt Datentypen und Zeichen so, dass sich Indizes oder Tabellen von MySQL ändern können. Aus diesem Grund müssen wir manchmal die Indizes in MySQL neu erstellen.
Es gibt einige Methoden, um die Indizes neu zu erstellen, und einige von ihnen reparieren oder erstellen die gesamte Datenbank oder die Tabelle neu, wobei nur der REINDEX eine Datenstruktur in MySQL ist, die nur zum Neuaufbau der Indizes verwendet werden kann.
Wir können den REINDEX verwenden, um die Indizes für eine oder mehrere Spalten neu zu erstellen, wodurch die Tabelle eine bessere Leistung erbringt und schneller auf die Daten zugegriffen werden kann.
Immer wenn eine Datenbank beschädigt ist oder repariert werden muss, muss der REINDEX verwendet werden, um die Indizes neu zu erstellen oder die Datenbank oder die Tabelle zu reparieren.
Die meisten Indizes von MySQL, einschließlich PRIMARY KEY, UNIQUE, INDEX, FULLTEXT und REINDEX, werden in den B-Bäumen gespeichert, bei denen es sich um selbstausgleichende Datenstrukturbäume zum Speichern der Daten handelt in besonderer Weise.
Bevor wir die Indizes mit REINDEX neu aufbauen oder die Datenbanken oder Tabellen neu aufbauen, müssen wir zuerst eine Datenbank mit Tabellen und Indizes erstellen. Dieses Tutorial demonstriert verschiedene Methoden, die verwendet werden, um die Indizes in MySQL neu zu erstellen.
Tabelle und Indizes erstellen
Lassen Sie uns nun ein Beispiel versuchen, um die Indizes mit dem REINDEX neu zu erstellen, aber bevor wir den Index neu erstellen, müssen wir zuerst die Indizes erstellen, also fangen wir damit an.
-
Zunächst lautet die Syntax zum Erstellen von Indizes:
CREATE INDEX [IndexName] ON [TableName] ([ColumnName]); -
Lassen Sie uns nun eine Tabelle erstellen
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;
Der obige Code erstellt eine Tabelle mit drei Zeilen und drei Spalten. Siehe die Ausgabe:
```text
id name position
1 Sheeraz SeniorDeveloper
2 John SeniorDeveloper
3 Jack JuniorDeveloper
```
-
Für
positiongibt es mehr als einenSeniorDeveloper. Wir können die Daten nach Position selektieren und auch erläutern.Siehe das Beispiel:
SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper"; EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";Die erste Abfrage wählt die Daten aus, bei denen die Position
SeniorDeveloperist, und die zweite erklärt, wie MySQL dies durchführt. Siehe die Ausgabe: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
-
Nun, wie wir sehen können, gibt es mehr als einen leitenden Entwickler in der Tabelle, also erstellen wir einen Index für diese Spalte und erklären dann die obige Abfrage, um den Unterschied zu sehen. Siehe das Beispiel:
CREATE INDEX position ON Employee(Position); EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";Nachdem Sie jetzt den Index erstellt haben, lautet die Ausgabe für die Abfrage
explain: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 NULLWie wir sehen können, wird der Typ
possible_keysinpositiongeändert, nachdem der Indexpositionerstellt wurde; ihm ist auch eine Taste zugeordnet. Wir können die Indizes auch durch die folgende Abfrage anzeigen:SHOW INDEXES FROM Employee;Die Ausgabe für diese Abfrage ist:
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
INDEXES mit REINDEX neu erstellen
Wenn nun in jedem Fall nach dem Erstellen der Indizes die Datenbank oder die Tabellen beschädigt sind, können wir die Indizes mit dem REINDEX neu erstellen, was uns hilft, den Speicher zu reduzieren und die IO-Effizienz zu erhöhen.
Die Syntaxen für den REINDEX sind:
# 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];
Hier können wir mit REINDEX oder OPTIMIZE die beschädigten Indizes neu aufbauen. Siehe das Beispiel:
REINDEX TABLE Employee(position);
SHOW INDEXES FROM Employee;
Oder:
OPTIMIZE TABLE Employee;
SHOW INDEXES FROM Employee;
Beide oben genannten Abfragen erstellen die Indizes für die Tabelle neu.
Ausgang:
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
Erstellen Sie INDEXES mit der REPAIR TABLE-Methode neu
Außer REINDEX können wir auch die ganze Tabelle reparieren, wodurch auch die Indizes in der Tabelle neu aufgebaut werden. Dazu gibt es eine einfache Abfrage.
REPAIR TABLE Employee;
SHOW INDEXES FROM Employee;
Der obige Code repariert die Tabelle, erstellt die Indizes neu und zeigt dann die Informationen der Indizes an. Siehe die Ausgabe:
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
INDEXES mit der ALTER TABLE-Methode mit InnoDB neu erstellen
Wir können auch die Abfrage ALTER TABLE verwenden, um die beschädigte Tabelle und Indizes mit der InnoDB-Engine neu zu erstellen. Hier ist die einfache Abfrage, um dies durchzuführen.
ALTER TABLE Employee ENGINE = InnoDB;
SHOW INDEXES FROM Employee;
Der Code verwendet ALTER, um die Tabelle und Indizes mit der InnoDB-Engine neu zu erstellen.
Ausgang:
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