MySQL-Rebuild-Index
- MySQL-Rebuild-Index
-
INDEXES
mitREINDEX
neu erstellen -
Erstellen Sie
INDEXES
mit derREPAIR TABLE
-Methode neu -
INDEXES
mit derALTER TABLE
-Methode mitInnoDB
neu 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:
id name position 1 Sheeraz SeniorDeveloper 2 John SeniorDeveloper 3 Jack JuniorDeveloper
-
Für
position
gibt 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
SeniorDeveloper
ist, 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 NULL
Wie wir sehen können, wird der Typ
possible_keys
inposition
geändert, nachdem der Indexposition
erstellt 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