mysqlデータベースの4つのインデックスの基本的な使用

2598 ワード

MYSQLデータベースの4種類のインデックスタイプの簡単な使用
≪プライマリ・キー・インデックス|Primary Key Index|oem_src≫:プライマリ・キーは一意のインデックスですが、PRIMARY KEYとして指定する必要があります.各テーブルにはプライマリ・キーが1つしかありません.
≪一意索引|Unique Index|oem_src≫:索引列のすべての値は1回のみ表示されます.つまり、 でなければなりません.値は です.
≪一般インデックス|General Index|emdw≫: のインデックス・タイプ.値は空であり、一意性の制限はありません. 
全文インデックス:全文インデックスのインデックスタイプはFULLTEXTです.全文インデックスは、varchar、char、textタイプのカラムで作成できます.ALTER TABLEまたはCREATE INDEXコマンドで作成できます.大規模なデータセットの場合、ALTER TABLE(またはCREATE INDEX)コマンドによる全文インデックスの作成は、全文インデックス付きの空のテーブルにレコードを挿入するよりも高速です.MyISAMは全文インデックスをサポートし、InnoDBはmysql 5.6以降は をサポートした.
1.なぜ ?従来のクエリー方法は、テーブルの順序に従って遍歴するものであり、いくつかのデータをクエリーするにかかわらず、mysqlはテーブルのデータを最初から最後まで遍歴する必要がある.インデックスを追加した後、mysqlは一般的にBTREE を通じて を生成し、データベースをクエリーする際に、インデックスファイルを見つけて ( )を行い、対応するキーを見つけてデータ2を取得する.インデックスの代価2.1インデックスを作成するのはインデックスファイルを生成するためで、 2.2インデックスファイルは で、私たちのdml操作も同様にインデックスファイルを修正するので、性能が低下することが予想されます.インデックスはどのcolumnで使用しますか?3.1クエリー条件フィールドとして頻繁に作成すべきインデックス3.2の一意性があまりにも悪いフィールドはインデックスの作成に適していないが、頻繁にクエリー条件として、例えばgender性別フィールド3.3 3.4 where のフィールド のまとめ:以下の条件を満たすフィールドこそインデックスを作成すべきである.a:whereバー b:このフィールドの内容 c:フィールドの内容 に違いない.
MYSQLデータベースの2つのインデックス方法
 HASH
hashは、数学の関数マッピングのような(key=>value)形式のキー値ペアであり、複数のkeyが同じvalueに対応することを許可するが、1つのkeyが複数のvalueに対応することは許されない.この特性のため、hashはインデックスに適しており、hashインデックスは一度に位置決めすることができます.
制限
1)Hashインデックスは「=」,「IN」および「<=>」クエリのみを満たすことができ,範囲クエリは使用できない.
(2)Hashインデックスは,データのソート操作を回避するために利用できない.HashインデックスにはHash計算後のHash値が格納されており、Hash値のサイズ関係は必ずしもHash演算前のキー値と完全に同じではないため、データベースはインデックスのデータを利用してソート演算を避けることができない.(3)Hashインデックスは部分インデックスキークエリを利用できない.コンビネーションインデックスの場合、Hashインデックスは、Hash値を計算する際にコンビネーションインデックスキーが結合された後にHash値を一緒に計算するので、Hash値を単独で計算するのではなく、コンビネーションインデックスの前の1つまたは複数のインデックスキーでクエリーを行う場合、Hashインデックスも利用できません.(4)Hashインデックスはいつでもテーブルスキャンを回避できない.
 BTREE
BTREEインデックスとは、インデックス値を一定のアルゴリズムでツリー状のデータ構造に格納するものである
BTREEのMyISAMでの形式はInnodbと少し違います
Innodbには、primary key形態とleaf nodeにデータが格納され、インデックスキーのデータだけでなく、他のフィールドのデータも格納されている2つの形態があります.二つ目はsecondary indexであり、leaf nodeと通常のBTREEとの差は多くないが、プライマリ・キーを指す情報が格納されている.
MyISAMでは、プライマリ・キーは他のものとあまり変わらない.ただしInnodbとは異なる点はMyISAMであり、leaf nodeに格納されているのはプライマリ・キーの情報ではなく、データ・ファイル内の対応するデータ行を指す情報である.