mysqlインデックスの原理のまとめ
文書ディレクトリ分類: メリットとデメリット インデックス b+ツリー検索プロセス 問題整理 インデックス hashタイプ b+ツリータイプ エンジン 集計インデックス の利点 補助インデックス インデックス コマンド 分類:
単列索引
結合インデックス
メリットとデメリット
クエリ速度が速い
更新速度が遅く、データだけでなくインデックスファイルも更新されます.
ディスク容量の使用
索引
hash,b+ツリー
b+:innodb、myisam
b+ツリー検索プロセスフィールドはできるだけ小さく、ツリーの高さが高いほど、何度もデータをロードする必要があり、検索効率が低いため、フィールドはできるだけ小さく、保存されたデータは比較的多く、占めるページ数を減らす 最左マッチング特性、b+ツリーは左から右の順でツリーを構築し、検索も最初の比較因子で検索範囲を決定し、最初の比較因子がなければ、どこから検索を開始するかを決定することはできません.3つの比較条件がある場合、ヘッダとヘッダのみが与えられている場合、最初にインデックスを使用して次の検索するノードを決定し、この範囲のデータを3つ目の比較条件でマッチングすることができます.
問題の整理
索引
インデックスは2つに分類されます. hashタイプ b+ツリータイプ hashタイプメソッド: hash値に基づいて位置決めします.hashが衝突するため、インデックスは最後に検索した要素をチェーンテーブルの要素と一致させ、結果を得ます.効率 hash衝突が比較的少ない場合,時間複雑度はo(1)である.
b+ツリータイプメソッド: データを並べ替えて、グループ化して、グループ化は存在するページの中で、各ページの中でまたページのディレクトリを必要として、更にページでページ番号と各ページのプライマリ・キーの最小値を格納して、同じ層のページの間は双方向のチェーン・テーブルで、データ・ページの間も双方向のチェーン・テーブルです
本質:検索は検索範囲を減らし、二分検索で検索速度を向上させる効率と特徴: cpuはディスクから1ページずつ読み取るため、ツリーの高さが高いと読み取り回数が多くなり、検索速度が低下するため、フィールドのサイズを減らし、1ページに多くのデータを格納し、ツリーの高さを減らすことができます.最左マッチング ツリーを左から右に作成するには、最初の比較条件で次の検索範囲を決定する必要があります.最初の比較条件がない場合は検索範囲を決定できません.最初の比較条件と最後の比較条件がある場合は、まず検索範囲を決定し、この範囲のデータを最後の比較条件に基づいて一致させます(これはインデックスがありません).
エンジン
集計インデックス
プライマリ・キーを使用して各テーブルにb+ツリーを構築することは、プライマリ・キーを使用してデータをソートすることです.
index文で作成する必要はありません.innodbのデフォルトのデータストレージ方式はこの方法です.
メリット
最後の数を検索すると、双方向チェーンテーブルが逆順序になります.
範囲を検索すると、リーフノードの上位ノードとページ範囲を取得できます.
補助インデックス表中の集計インデックスを除く他のインデックスは、二次インデックス(非集計インデックスとも呼ばれる) である.は、私たちが指定したインデックス列で をソートします.リーフノードは、プライマリキーとインデックス列、 を格納する.ディレクトリページに格納されているのは、プライマリ・キーとページ番号ではなく、インデックス列とプライマリ・キー、ページ番号 である.プライマリ・キーから集約インデックスへのレコード(リターン・テーブル) の再検索が必要である.
ディレクトリページのレコードの唯一の占有スペースは小さく、ページを減らすことができるので、計算が速い.
結合インデックス
複数のカラムをソートするルールであり、補助インデックスでもあります.
先に前の列で並べ替えて、同じなら後の列を考えて
コマンド#コマンド#
テーブルの作成時にunique key idを作成するid(id) index id_name(name)
既存のテーブルにcreate index idを作成id on gyy5(message(20)); create index id_id on gyy5(name);
テーブル構造を変更するときにalter table gyy 5 add index age intを作成します.
削除alter table gyy 5 drop index ix_t; drop index ix_m on gyy5;
表構造show columns from gy 5の表示
単列索引
,
結合インデックス
メリットとデメリット
クエリ速度が速い
更新速度が遅く、データだけでなくインデックスファイルも更新されます.
ディスク容量の使用
索引
hash,b+ツリー
b+ ,
, , , b+ , log
hash hash ,
hash ,
hash ,
hash ,hash , o(1)+o(logt)
b+:innodb、myisam
myisam , ,
innodb ibd , , data , , , , id
inndob , innodb (Myisam ),
, mysql ,
, mysql innodb , 6 , .
b+ツリー検索プロセス
1、 ,
2、 ,
, ,
3、 , , , ,
4、 。
問題の整理
索引
インデックスは2つに分類されます.
b+ツリータイプ
本質:検索は検索範囲を減らし、二分検索で検索速度を向上させる
エンジン
#
InnoDB , , B-tree、Full-text , Hash ;
MyISAM , , B-tree、Full-text , Hash ;
Memory , , B-tree、Hash , Full-text ;
NDB , , Hash , B-tree、Full-text ;
Archive , , B-tree、Hash、Full-text ;
集計インデックス
プライマリ・キーを使用して各テーブルにb+ツリーを構築することは、プライマリ・キーを使用してデータをソートすることです.
index文で作成する必要はありません.innodbのデフォルトのデータストレージ方式はこの方法です.
メリット
最後の数を検索すると、双方向チェーンテーブルが逆順序になります.
範囲を検索すると、リーフノードの上位ノードとページ範囲を取得できます.
補助インデックス
ディレクトリページのレコードの唯一の占有スペースは小さく、ページを減らすことができるので、計算が速い.
結合インデックス
複数のカラムをソートするルールであり、補助インデックスでもあります.
先に前の列で並べ替えて、同じなら後の列を考えて
コマンド#コマンド#
index:
:
primary key( 、 ): +
unique:( ): +
:
primary key(id+……)
unique(id+……)
index(id+……)
テーブルの作成時にunique key idを作成するid(id) index id_name(name)
既存のテーブルにcreate index idを作成id on gyy5(message(20)); create index id_id on gyy5(name);
テーブル構造を変更するときにalter table gyy 5 add index age intを作成します.
削除alter table gyy 5 drop index ix_t; drop index ix_m on gyy5;
表構造show columns from gy 5の表示