MySQLのインデックス

B +ツリーデータ構造を選択するMySQLのように、まず、セクションB +ツリーを閉じたままに

データを格納するためのバランスのバイナリツリーノードは、あなたが探している値を見つける必要が生じ何度も検索するには小さすぎる、大きすぎる木の高さが必要です。

B +ツリーは、いくつかの小さな顔をしています

データは、非リーフノードにのみストレージキーを記憶されていない程度を大きくすることができ、インデックスの値が小さいほど、良好

リーフノードは、ポインタを格納していません

シーケンシャルアクセスポインタは、アクセス性能間隔を改善するために、ランダムシーケンスは、IO ioのになります。

MySQLの2つの主なインデックス構造

 

 

 

以下は基本的なアーキテクチャのmysqlデータベースの図であります

 

 

 作成した共同インデックスの原則

1、最も一般的な列、左端の費用収益対応の原則

2、カラム、離散高選択

3、列の最小、スペースの最小の原則

共同インデックスと単一のインデックスは、スペースの一致ではない完全な廃棄物を行います

 

 

クエリは、Cを検索するときとBが使用関節指数A、B、などのキーワードと呼ばれる列のinodeカバーインデックスによって結果を返すことができる場合

インデックスの作成には、以下の原則です

列の長さの小さい優れた指標

インデックスは、より適切でなければならない、より良い完了必ずしも良いとは限りません

%99%99%などをインデックスに使用することができないような99のような%は、分散に基づいて異なる結果と同様、インデックスを使用することができないかもしれ

インデックスに使用することができないないと等しくない場合

多目的返品したいだけのデータ列は、索引を使用できないことを列のクエリを指定しました

代わりに、インデックスが左端の列から使用できない場合関節指数を求めます

一番左の列関節インデックス一致と完全一致の範囲は、さらにインデックスを使用することができる場合

コラム共同インデックス範囲が一致した場合、それは右の列にインデックスを使用することはできません。

 

費用収益対応の原則左端のmysql

 

MySQLでは複数列インデックス(関節指数)を確立最も優先順位を左左端の接頭辞を、原則。
我々は共同インデックス(COL1、COL2)2を確立することであれば、実際には、2つのジョイントインデックス(COL1)、(COL1、COL2を確立している );
3インデックス(COL1、COL2、COL3)、実際に存在する場合既に確立された3つの関節指数(COL1)、(COL1、COL2 )、(COL1、COL2、COL3)。

 

1、B +ツリーデータ項目は、(チャン、20、F)のように、探索木を確立するためにそのような(名前、年齢、性別)左から右へ、B +ツリーなどの複合データ構造でありますそのようなデータを取得する際に、B +ツリー名優先度比較は、同じ名前と年齢性別比較が順番に、最終的に得られたデータを取得すると、次の探索方向を決定する;しかし、(20、F)は、名前ありませんデータが来た探索木の​​名を確立するための時間は、第1の比較要因であるため、調査の最初のステップを知らない、B +ツリーノードには、最初に次に行くために知っておくために、検索クエリに応じて名前を付ける必要があります。

このデータを取得するような(チャン、F)として2、B +ツリー名は、検索方向を指定するために使用されるが、年齢次のフィールドの欠如、これだけ名前がデータの座席に等しいことができる発見され、その後セックスは、これは非常に重要な特性、すなわち、最も左のインデックスの整合特性である、データのFの試合です。(この状況は、関節のインデックスを使用することはできません)

 

共同インデックスの設立のMySQLの意義

トップ3の一つ

複合インデックス(a、b、c)を組み込み、それぞれ複数のインデックスので、書き込み動作を増加する、(A)の実際の構造、(b)は、(a、b、c)を3つのインデックスに等しいですオーバーヘッドオーバーヘッドとディスクスペース。データテーブルの大量のために、これは小さなオーバーヘッドではありません!

インデックスをカバー

同じ複合インデックス(a、b、c)は、以下のSQL場合:= 1テーブルから、B、Cを選択し、B = 1。次いで、MySQLはランダムIO操作の数を減らすテーブルに戻る必要なしに、インデックスデータをトラバースすることによって直接得ることができます。オペレーティングIOを削減し、IO特定のランダムな事実は、メインの最適化戦略のdbaです。だから、本当の実用的なアプリケーションで、インデックスをカバーすることは最適化されたパフォーマンス改善の主な手段の一つであります

より多くのインデックス列、少ないインデックスデータによってスクリーニング

データの存在1000Wテーブル、次のSQL:テーブルから選択* 、= 1およびb = 2およびc = 3の各条件は、によって選択されたデータの10%、もし単一の値インデックス、と仮定することができると仮定するとインデックスは1000Wスクリーニングすることができるが、複合インデックスである場合、インデックスは千ワットで選択された; 10 = 100ワットデータの%、およびリターンデータテーブルがページング次いで、ソート、データの100ワットから、B = 2、C = 3が見つかり、そして %10  10%  10%= 1W、より効率的であり、その後、ソート、ページング、一目

おすすめ

転載: www.cnblogs.com/xiaofeiyang/p/11823584.html