MYSQLプライマリ・キー・インデックス、一般インデックス、一意インデックス、全文インデックスの追加/変更/更新/削除、およびそのインスタンス

15781 ワード

プライマリ・キー索引
ユニークで空ではなく、複数のカラムを使用できます.
プライマリ・キー構文:元のテーブルにプライマリ・キーがある場合、ALTER ADDにプライマリ・キーを追加するとエラーが発生します.Multiple primary key definedは、元のプライマリ・キーを削除してから作成する必要があります.
CREATE TABLE tablename ( [...],  PRIMARY KEY ('       ','       '));ALTER TABLE tablename ADD PRIMARY KEY (       );ALTER TABLE tablename DROP PRIMARY KEY ; #               

//  
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD PRIMARY KEY (py_private_id,full_name)
ALTER TABLE `py_etl_private_fund_base_info_2_1` drop PRIMARY KEY 

一般索引
何の制限もありません.複数の列、空です.フィールドクエリーの高速化に使用します.
一般索引構文
CREATE INDEX <     > ON tablename (       ); #       INDEXALTER TABLE tablename ADD INDEX/KEY [     ] (       );  // KEY/INDEX     CREATE TABLE tablename ( [...], KEY ['     '] ('       ','       '));ALTER TABLE tablename DROP INDEX/KEY [     ] 

//  
CREATE index name_index3 ON `py_etl_private_fund_base_info_2_1`  (full_name) 
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD INDEX name_index(full_name)
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD KEY name_index2(short_name)
ALTER TABLE `py_etl_private_fund_base_info_2_1` DROP INDEX name_index3
ALTER TABLE `py_etl_private_fund_base_info_2_1` DROP KEY name_index2

ユニークインデックス
インデックス列のすべての値は1回しか表示されません.つまり、フィールドの内容が空である必要があります.自増IDのあるテーブルを使用する場合は、データの重複を防ぐために一意のインデックスを作成することが望ましい.
ユニークインデックス構文
CREATE UNIQUE INDEX <     > ON tablename (       ); #       INDEXALTER TABLE tablename ADD UNIQUE KEY/INDEX  [     ] (       ); // KEY/INDEX     CREATE TABLE tablename ( [...], UNIQUE KEY ['     '] ('       '));ALTER TABLE tablename DROP INDEX/KEY [     ] 
//  
CREATE UNIQUE index unique_3 ON `py_etl_private_fund_base_info_2_1`  (full_name)
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD unique KEY unique_1(py_private_id,full_name);
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD unique index unique_2(py_private_id,full_name);

ALTER TABLE `py_etl_private_fund_base_info_2_1` DROP index unique_3

全文索引
CHAR、VARCHAR、TEXTフィールドタイプに対して、LIKEワイルドカードを使用してクエリを行う場合、その速度が向上します.
CREATE FULLTEXT INDEX <     > ON tablename (       ); #       INDEXALTER TABLE tablename ADD FULLTEXT KEY/INDEX [     ] (       );  // KEY/INDEX     CREATE TABLE tablename ( [...], FULLTEXT KEY ['     '] ('       ','       '));ALTER TABLE tablename DROP INDEX/KEY [     ] 

//   
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD FULLTEXT all_index(full_name);
ALTER TABLE `py_etl_private_fund_base_info_2_1` ADD FULLTEXT key all_index1(full_name);
ALTER TABLE `py_etl_private_fund_base_info_2_1` DROP index all_index1

索引の表示
show keys from           show index from        #       
show keys from `py_etl_private_fund_base_info_2_1`

各主要パラメータの説明は以下の通りです.
パラメータ
説明
Table
インデックスを作成するデータテーブル名を表します.py_です.etl_private_fund_base_info_2_1データテーブル.
Non_unique
インデックスがユニークなインデックスであるかどうかを示します.一意のインデックスでない場合、カラムの値は1です.ユニークなインデックスの場合、カラムの値は0です.
Key_name
インデックスの名前を表します.
Seq_in_index
インデックス内のカラムの位置を示します.インデックスが単一カラムの場合、カラムの値は1です.インデックスが結合インデックスの場合、カラムの値はインデックス定義の各カラムの順序です.
Column_name
インデックスを定義するカラムフィールドを表します.
Collation
カラムがインデックスに格納される順序を示します.MySQLでは、昇順に「A」(昇順)の値が表示され、NULLであれば無分類となります.
Cardinality
インデックス内の一意の値の数の推定値.基数は、整数として格納された統計データに基づいてカウントされるため、小型テーブルであっても正確な値である必要はない.ベースが大きいほど、結合を行う場合、MySQLがインデックスを使用する機会が大きくなります.
Sub_part
カラムにインデックスが組み込まれている文字の数を表します.カラムが部分的にインデックスに組み込まれている場合、そのカラムの値はインデックスに組み込まれた文字の数である.カラム全体がインデックスに組み込まれると、そのカラムの値はNULLになります.
Packed
キーワードがどのように圧縮されるかを示します.圧縮されていない場合はNULLです.
Null
インデックス列にNULLが含まれているかどうかを表示します.カラムにNULLが含まれている場合、そのカラムの値はYESです.ない場合は、そのカラムの値はNOです.
Index_type
インデックスに使用されるタイプとメソッド(BTREE、FULLTEXT、HASH、RTREE)が表示されます.
Comment
コメントを表示します.
つまり、
プライマリ・キー索引:Key_nameはPRIMARYでIndex_typeはBTREEである.
一般索引:Non_uniqueは1で、Key_nameはPRIMARYではなくIndex_typeはBTREEである.
ユニークインデックス:Non_uniqueは0でKey_nameはPRIMARYではなくIndex_typeはBTREEである.
全文索引:Key_nameはPRIMARYでIndex_typeはFULLTEXTです.
注意点:
1.インデックス名の間に同じ名前は使用できません.
2.追加されたインデックスは、異なるインデックス名を持つことができるため、2回目も追加できます.