MySQLのインデックスタイプ:詳細FULLTEXT、NORMAL、空間、UNIQUE(スイッチ)

ノーマルノーマルインデックス

あなたが使用することができ、ほとんどの場合、一般的なインデックスを表します

ユニークユニークインデックス

フィールドは、インデックスとして、例えばID番号のために、繰り返されない、その情報を保証することである場合ユニークであり、重複したインデックスを許可しない、それは一意に設定することができます

制約は、一意にユニーク(固有の要件列)と主キー(主キー= NULL一意の単一のテーブルには、データベーステーブル内の各レコードを識別し、使用される各レコードがある(例えば、ユニークID)一意ではありません +ではありません)制約は、列または列の保証一意性を提供するように設定されているだけの行は、一意の主キー制約があり、自動的に定義されていますが、各テーブルには、複数のユニーク制約を持つことができますが、唯一の主キー制約。
ユニーク制約を作成するMySQLの

本文フルテキストインデックス

全閉ケーブル、長いテキスト検索時間を表し、最高の、短いテキストは、インデックスをお勧めしますが、データは現在のグローバルインデックスに置かれたときに大量のデータが取り出されたときにテーブルにないし、その後で本文を構築するよりも、本文のインデックスは、作成したインデックスを作成し、多くははるかに高速にテーブルと書き込みデータであります

長時間の記事、最良の結果を得るためのFULLTEXT検索。それは、通常のINDEX缶の行または2である場合には、比較的短いテキストで使用されます。

SPATIAL空間インデックス

空間インデックスは、空間データ型に設立された空間データ型のフィールドのインデックスが4、すなわちGEOMETRY、POINT、LINESTRING、POLYGONがあるMySQLのです。MYSQLは、空間インデックスを作成するための構文を作り、SPATIALキーワード展開を使用して定期的なインデックス・タイプを作成するために使用することができます。空間インデックスの列を作成し、それはNOT NULLとして宣言されなければならない、唯一の空間インデックステーブルのストレージエンジンMYISAMを作成します

Bツリー、ハッシュインデックスと屈折率との差
1、BTREEは、(B木(ツリーマルチ)であってもよい){使用主流}
2、このようにHASH(キー、値)は、範囲クエリのための非常に良いサポートしていました

配置後に特殊ハッシュインデックス構造、検索効率が非常に高く、インデックスが分岐ノードへのルートからB-Treeインデックスのニーズ、そして最後に、このページへのアクセスに何回IOアクセスノード、インデックスのハッシュとは異なり、検索することができていますクエリの効率はB-Treeインデックスよりもはるかに高いです。
多くの人が疑問を持っていることがあり、多くのより高効率のハッシュBツリー・インデックスいるので、なぜ我々は、ハッシュインデックスもB-Treeインデックスにそれを使用していないのですか?なぜならその特異ハッシュの高効率ハッシュインデックスが、インデックス自体も主に次のように、制限および欠点の多くをもたらしたもののすべてが、ハッシュインデックスが同じであるの両側を持っています。

(1)ハッシュインデックスのみが「=」を満たすことができ、「IN」および「<=>」クエリは、クエリの範囲を使用することができません。

ハッシュインデックスハッシュ値の比較は、ハッシュ演算の後に行われるので、それが唯一の理由サイズ関係ハッシュ値対応するハッシュアルゴリズムによって処理した後、使用することができないフィルタの範囲に基づいて、等価をフィルタリングするために使用することができる、ことができず前とハッシュ動作を確実とまったく同じ。

(2)ハッシュインデックスは、操作データ分類を回避するために使用することができません。

インデックスは、次のハッシュ、ハッシュ値との大小関係を介して算出されたハッシュハッシュ値を格納され、データベース操作の任意の並べ替えを避けるために、インデックスデータを使用できないような値は、ハッシュ演算前と必ずしも厳密に同じではないからです。

(3)ハッシュインデックスは、インデックスキーのクエリの一部を使用することはできません。

代わりに、一方の前面または複合インデックスキーのいくつかの、インデックスハッシュを介して、単独でクエリインデックスをハッシュ値を算出する、時間インデックスの組み合わせのために、ハッシュハッシュ値を算出する指標が計算され、次いで、複合インデックスキーのハッシュ値と結合します使用することはできません。

いつでも(4)ハッシュインデックスはテーブルスキャンを回避することはできません。

既に知られているように、ハッシュ演算によってインデックスキー後ハッシュインデックス、ハッシュ値により同一のハッシュ値が異なるインデックスキーの存在のために、ハッシュテーブルに格納された情報に対応するハッシュ計算結果と行ポインタもテイクを満たす特定の場合データのレコード数ハッシュキーを直接クエリハッシュインデックスから行うことができない、またはテーブル内の実際のデータ、および対応する結果にアクセスすることによって適切な比較を行うこと。

性能は必ずしも高い屈折率よりもBツリー(5)ハッシュインデックスは、大きなハッシュ値が等しい遭遇します。

あなたは、インデックスのハッシュを作成した場合、比較的低い選択のインデックスキーについては、その後、ハッシュ値に関連付けられたポインタ情報に格納されているレコードの数が多いでしょう。非常に面倒になりますログのいずれかを突き止めるためにこのように、貧しい全体的なパフォーマンスが得られ、表データに多くの訪問を浪費することになります。

実際の動作では、そのフィールドにインデックステーブルとして選択すべきか?

インデックスを作成するときに、インデックスをより効率的に利用するためには、あなたがインデックス作成のどのフィールドとどのようなタイプのインデックスを作成することを検討しなければならない、7つの原則がある:
1。一意のインデックスを選択
2。インデックス付け、ソート、グループとの共同フィールド操作することがしばしば必要である
3。多くの場合のクエリとしてインデックス付きフィールド
4。インデックスの数に制限
5。インデックスデータを少量使用してみてください
6。インデックスに接頭辞を使用してみてください
7。未使用または少し-使用されるインデックスを削除します

  1. このようなメカニズムフィールド値の変更があるように思わインデックスフィールドの並べ替え、我々は再確立する必要があります同時に変化、およびOrcaleので、mysqlの言うために(ないインデックスにフィールドを変更し、頻繁に更新され、それがインデックス化されていない、すぐにインデックスをソートし、それに応じて番号、バランス指数でそれを行うための期間)を変更
  2. 同じ列に複数の索引を作成することは推奨されません

オリジナルリンク:https://blog.csdn.net/guo_qiangqiang/article/details/88794971

おすすめ

転載: www.cnblogs.com/zhenghengbin/p/11908268.html