HOWTO · MySQL
MySQL 再構築インデックス
このチュートリアルでは、MySQL でインデックスを再構築する方法を示します。
このページの内容
このチュートリアルでは、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