mysqlインデックスの原理のまとめ


文書ディレクトリ
  • 分類:
  • メリットとデメリット
  • インデックス
  • b+ツリー検索プロセス
  • 問題整理
  • インデックス
  • hashタイプ
  • b+ツリータイプ
  • エンジン
  • 集計インデックス
  • の利点
  • 補助インデックス
  • インデックス
  • コマンド
  • 分類:
    単列索引

    結合インデックス
             
    

    メリットとデメリット
    クエリ速度が速い
    更新速度が遅く、データだけでなくインデックスファイルも更新されます.
    ディスク容量の使用
    索引
    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、      。
    
  • フィールドはできるだけ小さく、ツリーの高さが高いほど、何度もデータをロードする必要があり、検索効率が低いため、フィールドはできるだけ小さく、保存されたデータは比較的多く、占めるページ数を減らす
  • 最左マッチング特性、b+ツリーは左から右の順でツリーを構築し、検索も最初の比較因子で検索範囲を決定し、最初の比較因子がなければ、どこから検索を開始するかを決定することはできません.3つの比較条件がある場合、ヘッダとヘッダのみが与えられている場合、最初にインデックスを使用して次の検索するノードを決定し、この範囲のデータを3つ目の比較条件でマッチングすることができます.

  • 問題の整理
    索引
    インデックスは2つに分類されます.
  • hashタイプ
  • b+ツリータイプ
  • hashタイプ
  • メソッド:
  • hash値に基づいて位置決めします.hashが衝突するため、インデックスは最後に検索した要素をチェーンテーブルの要素と一致させ、結果を得ます.
  • 効率
  • hash衝突が比較的少ない場合,時間複雑度はo(1)である.
    b+ツリータイプ
  • メソッド:
  • データを並べ替えて、グループ化して、グループ化は存在するページの中で、各ページの中でまたページのディレクトリを必要として、更にページでページ番号と各ページのプライマリ・キーの最小値を格納して、同じ層のページの間は双方向のチェーン・テーブルで、データ・ページの間も双方向のチェーン・テーブルです
    本質:検索は検索範囲を減らし、二分検索で検索速度を向上させる
  • 効率と特徴:
  • cpuはディスクから1ページずつ読み取るため、ツリーの高さが高いと読み取り回数が多くなり、検索速度が低下するため、フィールドのサイズを減らし、1ページに多くのデータを格納し、ツリーの高さを減らすことができます.
  • 最左マッチング
  • ツリーを左から右に作成するには、最初の比較条件で次の検索範囲を決定する必要があります.最初の比較条件がない場合は検索範囲を決定できません.最初の比較条件と最後の比較条件がある場合は、まず検索範囲を決定し、この範囲のデータを最後の比較条件に基づいて一致させます(これはインデックスがありません).
    エンジン
    #                  
    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の表示