MySQLのインデックスの原則(イラスト)

データベースインデックスの原則

0のインデックスとは何ですか

特別なインデックスファイルの参照データテーブルのすべてのレコードへのポインタが含まれ、(のInnoDBテーブル上のインデックスは、テーブルスペースの一部である)です。言うのはもっと人気の、データベースのインデックスは、カタログの前で本のようで、データベースクエリの速度をスピードアップすることができますが、書き込み速度が低下します。

  • TABLE_NAMEからインデックスを示し、インデックスを参照してください
  • テーブル上のインデックスインデックス名(フィールド)を作成し、セカンダリインデックスを作成します
  • テーブル上のインデックスインデックス名(フィールド)をドロップし、インデックスを削除

1.インデックス

1.0フルテキストインデックス(FULLTEXT)

唯一のMyISAMテーブルのフルテキストインデックス作成とフルテキスト検索、FULLTEXTインデックスをサポートするために、最初からMySQLバージョン3.23.23;

1.1一般的な指標

セカンダリインデックス

1.2。インデックスのみ

一般的な指標と同様に、それは別です:索引列の値は一意であるが、ヌルが(別の主キーに注意してください)許可する必要があります。それは、複合インデックスの場合は、列の値の組み合わせは一意であり、通常のインデックスと同様の方法を作成する必要があります。

1.3。主キーインデックス

クラスタ化インデックス

1.4。単一列索引、マルチカラムインデックス

異なるクエリの効果の単一のマルチカラムインデックスを有する複数の別個のインデックス、クエリを実行するとき、MySQLはインデックスのみを使用できるため、複数のインデックスindexから最も厳しい制限のいずれかを選択します。

1.5。コンポジットインデックス(左端接頭辞)

共同インデックス

2.データベースのインデックス作品

  • Bツリー構造(blanceツリー)のルート - ノード - 支店 - 葉

  • B +ツリー

    #b+树 在b树的基础上进行了改良 -
    -1. 分支节点和根节点都不再存储实际的数据了,让分支和根节点能存储更多的索引的信息,就降低了树的高度,
    所有的实际数据都存储在叶子节点中
    -2. 在叶子节点之间加入了双向的链式结构(双向链表)方便在查询中的范围条件
    -3. mysql中,所有的b+树索引的高度基本控制在3层 

第一层存 1-10000的地址,10001-20000的地址,20001-30001的地址。。
第二层存 1-1000,1001-2000...90001-100001地址。。
第三层存 1,msg,jjj; 2,msg,kkkk;...并且第三层是一个双向链表,大大缩减了查询次数
  • 高さbの+の木に影響を与える要因には、インデックス、ツリーの効率に影響を与えます
    • 1.列は、できるだけ短い索引付け、より多くの情報は、各ノード、ツリーのより低い高さ、より速く効率に格納されています。
    • 2.インデキシング微分高いカラム、10%以上の繰り返し率は適していません。
  • クラスタ化インデックス

    • InnoDB内、クラスタ化インデックスと二次インデックスは、MyISAMテーブルでは、唯一の二次インデックス存在し、クラスタ化インデックス:ツリー構造に直接格納されたデータを葉
    • 主キーのインデックスを作成すると、クラスタ化されたインデックスキーのインデックスは、他のセカンダリインデックスが作成されます

  • セカンダリインデックス

    • データがツリーに存在しません。
    • リーフノードは、一次キー、一つ又は複数回検出されたデータが格納されています。

  • 補助指標の使用およびクラスタ化インデックス(テーブルへ戻る)と

    • バックテーブルにプライマリキーで見つかったセカンダリインデックスは、テーブルに戻って呼ばれるクラスタ化インデックスを、チェックするためにした後、

おすすめ

転載: www.cnblogs.com/bigox/p/11703328.html