innodb および myisam エンジンは、主キーまたは UNIQUE 属性を持つ列のインデックスを自動的に作成します。
他の列にインデックスを付けたい場合は、それを明示的に指定する必要があります。
1. テーブル作成時にインデックスを作成します
CREATE TABLE 表名 ( 各个列的信息..., (KEY/INDEX) 索引名 (需要被索引的单个列或多个列) )
KEY または INDEX のいずれかを同義語として使用できることに注意してください。
たとえば、index_demo テーブルを作成するときに、c2 列と c3 列に結合インデックスを追加します:
CREATE TABLE index_demo( c1 INT, c2 INT, c3 CHAR(1), PRIMARY KEY(c1), INDEX idx_c2_c3 (c2, c3) );
ここで作成されるインデックスの名前は idx_c2_c3 です。インデックス名は任意に付けることができますが、 idx_ を使用することをお勧めします。 idx_ はプレフィックスで、その後に再開するインデックスの列名が続きます。複数の列はアンダースコアで区切られます。
2. テーブル構造を変更するときにインデックスを追加します
ALTER TABLE 表名 ADD (KEY/INDEX) 索引名 (需要被索引的单个列或多个列);
3. テーブル構造を変更するときにインデックスを削除します
ALTER TABLE 表名 DROP (KEY/INDEX) 索引名;
次に、最初に構築されたインデックス idx_c2_c3 を削除します。次のように書きます:
ALTER TABLE index_demo DROP INDEX idx_c2_c3;
インデックスは良いものですが、恣意的に作成することはできません。
これは非常に明白です。
インデックスが作成されるたびに、そのインデックスに対して B ツリーを構築する必要があります。
各 B ツリーの各ノードはデータ ページであり、デフォルトで 16 kb のストレージ スペースを占有します。
以上がMysql インデックスの作成、削除、使用のコストはいくらですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。