ホームページ  >  記事  >  データベース  >  MySQLインデックスの詳しい説明とサンプルチュートリアル

MySQLインデックスの詳しい説明とサンプルチュートリアル

零下一度
零下一度オリジナル
2017-05-16 10:42:541164ブラウズ

MySQL インデックス

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

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

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

インデックスを作成するときは、インデックスが SQL query ステートメントの条件として (通常は 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コマンドを使用してインデックスを追加、削除する

データテーブル:

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 FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

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

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

ALTER コマンドで DROP 句を使用してインデックスを削除することもできます。インデックスを削除するには、次の例を試してください。

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

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

主キーは 1 つの列にのみ作用します。主キー インデックスを追加するときは、主キーがデフォルトでは 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
........

【相关推荐】

1. 特别推荐“php程序员工具箱”V0.1版本下载

2. 免费mysql在线视频教程

3. 数据库设计那些事

以上がMySQLインデックスの詳しい説明とサンプルチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。