MySQLインデックスの概要


MySQLインデックス概要インデックスの利点:1.一意性インデックスを作成することで、データベース・テーブル内の各行のデータの一意性を保証できます.2.データの取得を高速化できます.インデックスの欠点:1.テーブル内のデータを追加、削除、変更する場合、インデックスも動的にメンテナンスされ、データのメンテナンス速度が低下します.2.インデックスは物理空間を占有する必要があります.
索引の種類:1.INDEX:一般インデックス2.PRIMARY KEY:プライマリ・キー3.UNIQUE:ユニークインデックス4.FOREGN KEY:外部キー5.FULLTEXT:グループインデックス
1.INDEX:一般インデックス1.1 1つのテーブルに複数のINDEXフィールドがあります.1.2フィールドの値は重複を許容し、NULL値を付与することができる.1.3クエリー条件を行うフィールドをINDEXフィールドに設定することが多い.1.4 INDEXフィールドのKEYフラグはMULです.
Insert intoライブラリ名テーブル名values(値リスト);テーブルレコードselect*fromライブラリ名を挿入します.テーブル名;テーブルのすべてのレコードの表示
 :           
-INDEX(  1),INDEX(  2)...
mysql>create database ku;
mysql>create table ku.abc(
>id    int(2) not null,
>name  varchar(4)  not null,
>age   int(3)  not null,
>index(name),index(age)               
>);

mysql>desc ku.abc;
Field  Type  Null  Key   Default   Extra
..   ..     ..      MUL    ..     ..

mysql>insert into ku.abc values(1,"wang",23);
mysql>select * from ku.abc;

既存のテーブルにINDEXフィールドのフォーマットを設定:create indexインデックスonライブラリ名.テーブル名(フィールド);
指定したテーブルのインデックスフィールドフォーマットを削除します:drop indexインデックス名onライブラリ名.テーブル名;
 :
mysql>create index  xixi on ku.abc(id);
mysql>drop  index  xixi on ku.abc;

テーブルのインデックス情報フォーマットを表示する:show index fromライブラリ名.テーブル名;
 :
mysql>show index from ku.abc\G;
......
Index_type: BTREE(    B   )
......

デフォルトで使用されるインデックスタイプ:BTREE(ツリー)hash B+Tree
2.PRIMARY KEY:プライマリ・キー2.1 1つのテーブルに1つのprimary keyフィールド2.2しか存在しない対応するフィールドの値に重複は許可されず、NULL値の付与は許可されません.2.3複数のフィールドがprimary keyとして使用され、複合プライマリ・キーと呼ばれる場合は、一緒に作成する必要があります.2.4主キーフィールドのKEYフラグはPRIです.2.5通常とAUTO_INCREMENT連用.2.6表に記録を一意に表示できるフィールドを主キーフィールドに設定することが多い.(レコード番号フィールドなど)
注記:プライマリ・キーとauto_increment連用フィールド値は+1プライマリ・キーを自動的に増加し、数値タイプ
 :           
-PRIMARY KEY(   )
mysql>create table ku.abc2(
>id  int(3)  auto increment,
>name  varchar(5)  not null,
>age   int(2)  not null,
>primary key(id)
>);

mysql>desc ku.abc2;
 Field  Type  Null  Key  Default    Extra
..    ..    ..     PRI     ..      ..

mysql>insert into ku.abc2 values(2,"wang",23);
mysql>select * from ku.abc2;

作成したテーブルにPRIMARY KEYフィールドのフォーマットを設定する:alter tableライブラリ名.表名ADD PRIMARY KEY(ワードセグメント名);
指定されたテーブルのPRIMARY KEYフィールドフォーマット:alter tableライブラリ名を削除します.表名DROP PRIMARY KRY;注意:自己増加属性(AUTO_INCREMENT)がある場合は、先に削除する必要があります.
 :
mysql>alter tabel ku.abc2  drop primary key;
mysql>alter table ku.abc2 add primary key(id);

3.UNIQUE:一意のインデックス3.1 1つのテーブルに複数のUNIQUEフィールドがあります.3.2対応するフィールドの値に重複は許可されません.3.3 UNIQUEフィールドのKEYフラグはUNIです.3.4 UNIQUEフィールドの値はNULLを許可し、NULLを許可しないように変更すると、このフィールドはプライマリ・キーと同じに制限され、KEYはPRIになります.
 :       UNIQUE  
-UNIQUE(  1),UNIQUE(  2)...
mysql>create table ku.abc3(
>id char(6),
>name  varchar(4)  not null,
>age int(3)  not null,
>unique(id),unique(name),unique(age)
>);

mysql>desc ku.abc3;
Field   Type    Null      Key    Default   Extra
..     ..    YES    UNI     ..      ..

mysql>insert into ku.abc3 values(3,"wang",23);
mysql>insert into ku.abc values(4,"lisi",23);
mysql>select * from ku.abc3;

作成したテーブルにUNIQUEフィールドのフォーマットを設定:create unique index uniqueフィールド名onライブラリ名.表名(段落名);
指定したテーブルのUNIQUEフィールドフォーマットを削除する:drop index uniqueフィールド名onライブラリ名.表名(段落名);
 :
mysql>drop  index name on  ku.abc3; #   INDEX       。
mysql>create unique  index name on ku.abc3(age);

4.FOREGN KEY:外部キー4.1は、現在のテーブルフィールドの値を別のテーブルフィールドの値の範囲内で選択させる.
外部キーの使用条件:1.テーブルのストレージエンジンはinnodbでなければなりません.2.2つのテーブルのフィールドタイプが一致するようにします.3.参照されるフィールドは、プライマリ・キー・タイプ(PRIMARY KEY)である必要があります.
基本的な使い方:フォーマット:foreign key(表Aのフィールド名)references表B(フィールド名)on update cascade on delete cascade#参照表はB、すなわちB表フィールドの値の範囲から選択します.
 :
  :             (PRIMARY KEY)。
mysql>create table  ku.abc4(
>id  int(4),
>name char(5),
>foreign key(name),
>references  abc3(name),
>on update  cascade
>on  delete cascade
>engine=innodb
>);

外部キーフィールドフォーマットの削除:alter tableテーブル名drop foreign key制約名;
 :
mysql>show create table  ku.abc4\G;
...
CONSTRAINT `xxx`    #`xxx`      
.....

mysql>alter table ku.abc4 drop foreigen key xxx ;