MySQLi-インデックス
データベースインデックスは、テーブル内の操作の速度を向上させるデータ構造です。インデックスは、1つ以上の列を使用して作成でき、迅速なランダムルックアップとレコードへのアクセスの効率的な順序付けの両方の基礎を提供します。
インデックスを作成するときは、SQLクエリを作成し、それらの列に1つ以上のインデックスを作成するために使用される列は何かを考慮する必要があります。
実際には、インデックスはテーブルのタイプでもあり、主キーまたはインデックスフィールドと、各レコードへのポインタを実際のテーブルに保持します。
ユーザーはインデックスを表示できません。インデックスはクエリを高速化するために使用され、データベース検索エンジンによってレコードを非常に高速に検索するために使用されます。
INSERTステートメントとUPDATEステートメントは、インデックスを持つテーブルでは時間がかかりますが、SELECTステートメントはそれらのテーブルで高速になります。その理由は、挿入または更新を実行している間、データベースはインデックス値も挿入または更新する必要があるためです。
シンプルでユニークなインデックス
テーブルに一意のインデックスを作成できます。一意のインデックスは、2つの行が同じインデックス値を持つことができないことを意味します。テーブルにインデックスを作成するための構文は次のとおりです。
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);
1つ以上の列を使用してインデックスを作成できます。たとえば、NAME_INDEXを使用してtutorials_infにインデックスを作成できます。
CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);
テーブルに簡単なインデックスを作成できます。クエリからUNIQUEキーワードを省略するだけで、単純なインデックスが作成されます。単純なインデックスでは、テーブル内の値を重複させることができます。
列の値を降順で索引付けする場合は、列名の後に予約語DESCを追加できます。
mysql> CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf (name DESC);
INDEXを追加および削除するALTERコマンド
テーブルにインデックスを追加するためのステートメントには4つのタイプがあります-
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) −このステートメントは、PRIMARY KEYを追加します。これは、インデックス付きの値が一意である必要があり、NULLであってはならないことを意味します。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) −このステートメントは、値が一意である必要があるインデックスを作成します(NULL値は複数回表示される場合があります)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list) −これにより、任意の値が複数回表示される可能性のある通常のインデックスが追加されます。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) −これにより、テキスト検索の目的で使用される特別なFULLTEXTインデックスが作成されます。
これは、既存のテーブルにインデックスを追加する例です。
mysql> ALTER TABLE tutorials_inf ADD INDEX (id);
ALTERコマンドと一緒にDROP句を使用すると、任意のINDEXを削除できます。次の例を試して、上記で作成したインデックスを削除してください。
mysql> ALTER TABLE tutorials_inf DROP INDEX (c);
ALTERコマンドと一緒にDROP句を使用すると、任意のINDEXを削除できます。次の例を試して、上記で作成したインデックスを削除してください。
PRIMARYKEYを追加および削除するALTERコマンド
同じ方法で主キーを追加することもできます。ただし、主キーがNULLではない列で機能することを確認してください。
これは、既存のテーブルに主キーを追加する例です。これにより、最初に列がNOT NULLになり、次に主キーとして追加されます。
mysql> ALTER TABLE tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);
次のように、ALTERコマンドを使用して主キーを削除できます。
mysql> ALTER TABLE tutorials_inf DROP PRIMARY KEY;
PRIMARY KEY以外のインデックスを削除するには、インデックス名を指定する必要があります。
INDEX情報の表示
SHOW INDEXコマンドを使用して、テーブルに関連付けられているすべてのインデックスを一覧表示できます。垂直形式の出力(\ Gで指定)は、長い行の折り返しを回避するために、このステートメントで役立つことがよくあります。
次の例を試してください
mysql> SHOW INDEX FROM table_name\G
........