Latest web development tutorials

MySQLのインデックス

MySQLのMySQLは、効率的な動作のために索引を作成するインデックスが大幅のMySQLの検索速度を向上させることができ、非常に重要です。

例えば、合理的な設計場合とMySQLはランボルギーニであるインデックスを使用し、その後、MySQLは三輪車であるインデックスのない設計および使用はありません。

インデックスは、別のインデックスと併用指数を指しています。 単一の列のインデックスが含まれている別のインデックスは、テーブルには、複数の別々のインデックスを持つことができますが、これは複合インデックスではありません。 複合インデックス、列を複数備え、すなわちケーブル。

あなたは、インデックスを作成するときは、インデックスは(一般的にWHERE句の条件として)SQLクエリの条件で使用されていることを確認する必要があります。

実際には、インデックスはまた、エンティティテーブルを記録するために主キーとインデックスフィールド、との点を保持するテーブルです。

上記は、インデックスを使用する利点について話しているが、インデックスの過度の使用は乱用になります。 したがって、インデックスはまた、その欠点があります。それは、このようなテーブルの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; 

固有索引

索引列の値は一意であるが、自由に値を許可する必要があります。それは異なっている、以前の一般的な指標に類似しています。 それがインデックスの組み合わせである場合は、列の値は一意である必要があります。 それは、次の方法を作成しました:

インデックスを作成します。

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つの方法があります。

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

  • テーブルtbl_nameは、UNIQUE INDEX_NAME(column_listのをADD ALTER ):この文は、インデックス値が一意である必要があります作成します(外NULL以外、NULLが複数回表示されることがあります)。
  • INDEX index_nameは(column_listのをADD tbl_nameをALTER TABLEを ):通常のインデックスを追加、インデックスの値が複数回発生する可能性があります。
  • テーブルtbl_nameはFULLTEXT index_nameは(column_listのをADD ALTER ):この文では、フルテキストインデックスのために、インデックスがFULLTEXTであることを指定します。

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

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

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

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

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

あなたは、主キーインデックスを追加するとき、あなたはデフォルトの主キーは(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
........