MySQL 最新のマニュアル ...login
MySQL 最新のマニュアル チュートリアル
著者:php.cn  更新時間:2022-04-15 14:04:12

MySQLインデックス


MySQL インデックス

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスにより、MySQL の検索速度が大幅に向上します。

たとえば、適切に設計されインデックスを使用する MySQL がランボルギーニである場合、設計されていないインデックスを使用する MySQL は人間の三輪車です。

インデックスは、単一列インデックスと結合インデックスに分かれています。単一列インデックスは、テーブルに複数の単一列インデックスを含めることができますが、これは結合されたインデックスではないことを意味します。結合インデックス。つまり、インデックスには複数の列が含まれます。

インデックスを作成するときは、インデックスが SQL クエリ ステートメントの条件 (通常は WHERE 句の条件として) に適用されていることを確認する必要があります。

実際、インデックスはテーブルでもあり、主キーとインデックス フィールドを格納し、エンティティ テーブルのレコードを指します。

インデックスを使用する利点は上で説明しましたが、インデックスを過度に使用すると乱用が発生します。したがって、インデックスには欠点もあります。インデックスによりクエリ速度は大幅に向上しますが、テーブルの INSERT、UPDATE、DELETE などのテーブルの更新速度も低下します。テーブルを更新するとき、MySQL はデータを保存するだけでなく、インデックス ファイルも保存する必要があるためです。

インデックスファイルを作成すると、ディスクスペースが占有されます。

通常のインデックス

インデックスの作成

これは最も基本的なインデックスであり、制限はありません。以下の作成方法があります:

CREATE INDEX indexName ON mytable(username(length));
CHAR、VARCHAR 型の場合、長さはフィールドの実際の長さより小さくてもかまいませんが、BLOB および TEXT 型の場合は長さを指定する必要があります。

テーブル構造の変更

ALTER mytable ADD INDEX [indexName] ON (username(length))
テーブル作成時に直接指定
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);
インデックスを削除する構文
DROP INDEX [indexName] ON mytable;

一意のインデックス

前の通常のインデックスと似ていますが、違いは次のとおりです。インデックス列の値は一意である必要がありますが、null 値も許可されます。複合インデックスの場合、列値の組み合わせは一意である必要があります。以下の作成方法があります:

インデックスを作成

CREATE UNIQUE INDEX indexName ON mytable(username(length))
テーブル構造を変更
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
テーブル作成時に直接指定
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
);

ALTER コマンドを使用してインデックスを追加および削除します

データ テーブルにインデックスを追加するには 4 つの方法があります:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): このステートメントは主キーを追加します。インデックス値は一意である必要があり、NULL にすることはできません。

  • ALTER TABLE tbl_name ADD UNIQUE Index_name (column_list): このステートメントによって作成されるインデックスの値は一意である必要があります (NULL を除き、NULL は複数回出現する可能性があります)。

  • ALTER TABLE tbl_name ADD INDEX Index_name (column_list): 通常のインデックスを追加します。インデックス値は複数回出現する可能性があります。

  • ALTER TABLE tbl_name ADD FULLTEXTindex_name (column_list):このステートメントは、フルテキスト インデックス作成のインデックスを FULLTEXT として指定します。

次の例は、テーブルにインデックスを追加する例です。

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
ALTER コマンドで DROP 句を使用してインデックスを削除することもできます。インデックスを削除するには、次の例を試してください。
mysql> ALTER TABLE testalter_tbl DROP INDEX (c)

主キーの追加と削除には ALTER コマンドを使用します

主キー インデックスを追加する場合、主キーは 1 つの列にのみ作用します。主キーがデフォルトで空でないこと (NOT NULL) を確認してください。例は次のとおりです:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
ALTER コマンドを使用して主キーを削除することもできます:
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
削除する場合は PRIMARY KEY のみを指定する必要がありますが、インデックスを削除する場合はインデックス名を知っている必要があります。

インデックス情報を表示する

SHOW INDEX コマンドを使用して、テーブル内の関連するインデックス情報を一覧表示できます。出力情報は、G を追加することでフォーマットできます。

次の例を試してください:

mysql> SHOW INDEX FROM table_name\G
........

関連ビデオチュートリアルの推奨事項:

PHP中国語ウェブサイト