連絡先別のインデックス、複合インデックス、主キー、ユニークインデックス、クラスタ化インデックス、非クラスタ化インデックス、ユニークなクラスタ化インデックスは、インデックスの違いを理解しやすいです

指数

データストレージ、データ検索:データベースは2つのだけのことを行います。インデックスは、いくつかの追加の兆候(通常はB +ツリーを)保存データを取得するための時間を短縮するために、あなたが保存したデータの外にあります。したがって、メインインデックスが由来追加のデータ構造です。

テーブルがインデックスの任意の数を作成することができ、各フィールドの任意の数の組み合わせであってもよいです。インデックスは、(クエリ場合は、インデックスを使用して)検索をスピードアップするかもしれませんが、すべてを書き、そのインデックスは列のみに適用されなければならないインデックスを更新する必要が頻繁に検索する必要があるので、それは、書き込み速度が遅くなり、追加しないでください書き込みに一度、多くの少ない列を読み込みます。

そして、別のインデックス複合インデックス

フィールドは、単一のインデックスが複合インデックス(またはインデックス組合せ)と呼ばれる2つの以上のフィールドを含むインデックスを、と呼ばれている含まれています。あなたは複合インデックスを作成すると、フィールドの順序は非常に重要です。

列X、Y列、複合インデックス列Zの確立に次のSQLステートメント

CREATE INDEX 索引名 ON 表名(列名X, 列名Y, 列名Z);

実際には、これはすなわち、3つのインデックスの確立に相当します。

1、別のインデックス(列X)2、複合インデックス(行X列Y)3、複合インデックス(行X列Y、列Z)。

それを理解するには?

我々はできる電話帳にたとえる昔ながらの紙の一つのフィールドの組み合わせよりも指数、3は以下のとおりです。

姓 - 名 - 電話番号

最初の姓のアルファベット順の電話帳の内容に応じて、(姓、名)複合インデックスの確立に等価で同じ姓のアルファベット順の最初名前。人の名前、電話番号の組み合わせ - あなたはすぐに、インデックスによって特定の姓の電話番号を持つすべての人々が、あなたはすぐに特定の名前を見つけることができます見つけることができます。しかし、あなたが特定の人物の名前を検索する場合、実際には、このインデックスは役に立たない、あなたは最初から最後まで全体の電話帳を通過することができます想像してみてください。

唯一のインデックスと主キー

一意のインデックスは、テーブル内のフィールドの組合せの値が繰り返されないことができ、この(またはこれらの)、上記の表の1つまたは複数のフィールドの組み合わせの指標が確立されています。テーブルには、一意のインデックスの任意の数を作成するが、一般的に一つだけを作成することができます。

主キーは一意のインデックス差の特別な種類であるのみインデックス列がnull値を許容し、主キー列がnull値を許可していないということです。表は、主キーを作成することはできません、主キーまで作成します。

クラスタ化インデックス、非クラスタ化インデックス、主キー

「データベースの理論」では、クラスタ化インデックスと非クラスタ化インデックスの違いを説明するため、このような本です、次のとおりです。

クラスタ化インデックスのリーフノードは、クラスタ化インデックスのリーフノードがまだiノードが、対応するデータブロックを指すポインタが存在するのではなく、データノードです。

それを理解するには?

インデックスをクラスタ化され、それは、ハードディスク上のデータの物理的な順序です。主キーは、通常の状況下で、デフォルトのクラスタ化インデックスです。

一方のみが存在するようなテーブルは、唯一のクラスタ化インデックス、実際のデータの物理的な順序を可能にします。あなたがテーブルの上にクラスタ化インデックス、それのために新たに作成されたクラスタ化インデックスでない場合は、我々は再オーダー既存のデータに必要なので、テーブルは欠点が遅く、頻繁に更新された列のためにクラスタ化インデックスで修正されます私たちは、クラスタ化インデックスを構築するべきではありません。

すぐに記録が最初のインデックス値を持っているとして、クラスタ化インデックス、最高のパフォーマンスが、発見され、インデックス値を有する連続記録は、物理的にも従わなければなりません。テーブルは、唯一のクラスタ化インデックスを持っているので、非常に貴重な、慎重にクラスタ化インデックス(または複合クラスタ化インデックス)として最も一般的なSQLクエリのテーブルに従って(またはそれ以上)のフィールドを選択し、一般的に、設定する必要がありますすることができます。

表に主キーを定義していない場合、クラスタ化インデックスのデフォルトの主キーは、InnoDBは[1]同じ主キー特性を有する代わりに、「唯一の非空のインデックスが」NULL値を発生することができない一意のインデックス列を指す(固有の空でないインデックスを選択します)。そのようなインデックスが存在しない場合、InnoDBは暗黙のうちに主キー、クラスタ化インデックスとして定義されています。

クラスタ化インデックスと一意索引

厳密に言えば、クラスタ化インデックスは必ずしも一意のインデックスではありません、クラスタ化インデックスのインデックス値は一意である必要はなく、独自のクラスタ化インデックスがあります!カラムにクラスタ化インデックスが同じ値の2つ以上を挿入することができるでは、ソートされたクラスタ化インデックスの物理的な順序でハードディスク上の同じ値が複数同じ、何もありません。

おすすめ

転載: www.cnblogs.com/heqiyoujing/p/11229260.html