MySQL 再構築インデックス
- MySQL 再構築インデックス
-
REINDEX
を使用してINDEXES
を再構築する -
REPAIR TABLE
メソッドを使用してINDEXES
を再構築する -
InnoDB
でALTER TABLE
メソッドを使用してINDEXES
を再構築する
このチュートリアルでは、MySQL でインデックスを再構築する方法を示します。
MySQL 再構築インデックス
MySQL は、MySQL のインデックスまたはテーブルを変更できるように、データ型と文字を処理します。 そのため、MySQL でインデックスを再構築する必要がある場合があります。
インデックスを再構築するにはいくつかの方法があり、そのうちのいくつかはデータベース全体またはテーブルを修復または再構築します。この場合、REINDEX
のみが MySQL のデータ構造であり、インデックスのみを再構築するために使用できます。
REINDEX
を使用して、1つまたは複数の列のインデックスを再構築し、テーブルのパフォーマンスを向上させ、データにすばやくアクセスできます。
データベースが破損したり、修復が必要な場合はいつでも、REINDEX
を使用してインデックスを再構築するか、データベースまたはテーブルを修復する必要があります。
PRIMARY KEY
、UNIQUE
、INDEX
、FULLTEXT
& REINDEX
を含む MySQL のインデックスのほとんどは、データを格納するための自己均衡型データ構造ツリーである B ツリーに格納されます。 特定の方法で。
REINDEX
を使用してインデックスを再構築するか、データベースまたはテーブルを再構築する前に、まずテーブルとインデックスを含むデータベースを作成する必要があります。 このチュートリアルでは、MySQL でインデックスを再構築するために使用されるさまざまな方法を示します。
テーブルとインデックスの作成
REINDEX
を使用してインデックスを再構築する例を試してみましょう。ただし、インデックスを再構築する前に、まずインデックスを作成する必要があるため、それから始めましょう。
-
まず、インデックスを作成する構文は次のとおりです。
CREATE INDEX [IndexName] ON [TableName] ([ColumnName]);
-
さて、テーブルを作成しましょう
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;
上記のコードは、3 行 3 列のテーブルを作成します。 出力を参照してください。
id name position 1 Sheeraz SeniorDeveloper 2 John SeniorDeveloper 3 Jack JuniorDeveloper
-
ポジション
には、複数のSeniorDeveloper
があります。 位置に応じてデータを選択し、それについて説明することもできます。例を参照してください。
SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper"; EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
最初のクエリは位置が
SeniorDeveloper
であるデータを選択し、2 番目のクエリは MySQL がそれをどのように実行するかを説明します。 出力を参照してください。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
-
ご覧のとおり、テーブルには複数の上級開発者が含まれているため、その列のインデックスを作成し、上記のクエリを説明して違いを確認します。 例を参照してください。
CREATE INDEX position ON Employee(Position); EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
ここでインデックスを作成すると、
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
ご覧のとおり、インデックス
position
を作成した後、型possible_keys
はposition
に変更されます。 キーも割り当てられます。 次のクエリでインデックスを表示することもできます。SHOW INDEXES FROM Employee;
このクエリの出力は次のとおりです。
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
REINDEX
を使用して INDEXES
を再構築する
いずれにしても、インデックスの作成後にデータベースまたはテーブルが破損した場合、REINDEX
を使用してインデックスを再構築できます。これにより、メモリを削減し、IO 効率を向上させることができます。
REINDEX
の構文は次のとおりです。
# 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];
ここで、REINDEX
または OPTIMIZE
を使用して、破損したインデックスを再構築できます。 例を参照してください。
REINDEX TABLE Employee(position);
SHOW INDEXES FROM Employee;
または:
OPTIMIZE TABLE Employee;
SHOW INDEXES FROM Employee;
上記のクエリは両方とも、テーブルのインデックスを再構築します。
出力:
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
REPAIR TABLE
メソッドを使用してINDEXES
を再構築する
REINDEX
以外に、テーブル全体を修復することもできます。これにより、テーブル内のインデックスも再構築されます。 それを実行するための簡単なクエリがあります。
REPAIR TABLE Employee;
SHOW INDEXES FROM Employee;
上記のコードは、テーブルを修復し、インデックスを再構築してから、インデックスの情報を表示します。 出力を参照してください。
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
InnoDB
で ALTER TABLE
メソッドを使用して INDEXES
を再構築する
ALTER TABLE
クエリを使用して、InnoDB
エンジンを使用して破損したテーブルとインデックスを再構築することもできます。 これを実行するための簡単なクエリを次に示します。
ALTER TABLE Employee ENGINE = InnoDB;
SHOW INDEXES FROM Employee;
コードは ALTER
を使用して、InnoDB
エンジンを使用してテーブルとインデックスを再構築します。
出力:
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