MySQL-Rebuild-Index

Sheeraz Gul 20 Juni 2023
  1. MySQL-Rebuild-Index
  2. INDEXES mit REINDEX neu erstellen
  3. Erstellen Sie INDEXES mit der REPAIR TABLE-Methode neu
  4. INDEXES mit der ALTER TABLE-Methode mit InnoDB neu erstellen
MySQL-Rebuild-Index

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.

  1. Zunächst lautet die Syntax zum Erstellen von Indizes:

    CREATE INDEX [IndexName] ON [TableName] ([ColumnName]);
    
  2. 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
    
  3. Für position gibt es mehr als einen SeniorDeveloper. 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
    
  4. 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 in position geändert, nachdem der Index position 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 Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - MySQL Index