MySQLの詳細な説明のインデックス

詳細なMySQLのインデックス(長所と短所、あなたが必要とするとき/インデックスを作成し、SQL文を最適化する必要はありません)

 まず、インデックスは何ですか?

  インデックスは、データベーステーブル内のインデックスすることができますすばやくアクセス固有の情報をランク付けを設定するための値またはデータベーステーブルの複数の列です。

 

第二に、インデックスの役割?

  帳簿上のディレクトリへのインデックスと同等、あなたはすぐにパフォーマンス(サーチアップ速度)を向上させるために、カタログのページ数に基づいてコンテンツを見つけることができます

 

第三に、利点:

  1. 一意のインデックスを作成することで、データベーステーブルのデータの各行の一意性を保証することができます。
  2. あなたは、データ検索の速度を加速することができます
  3. あなたは、テーブルとテーブルの間の接続を高速化することができます
  4. グループ化し、検索するために仕分け使用するときは、グループ化と並べ替えクエリ時間を短縮することができます

 

第四に、欠点

  1. インデックスを作成し、インデックスのメンテナンスは、データ量が増加の増加に伴い、この時間は時間がかかります。
  2. インデックスは、追加の物理的なスペースを必要とする大きなデータ量、より大きなスペース
  3. 毎回、必要性を動的に維持されるようにので、インデックスへの追加や削除のリストへの追加や削除の効率が低下します

 

第五に、あなたは、インデックスを作成する必要があります

  1.  主キーは自動的に一意のインデックスを作成します
  2.  頻繁にクエリフィールドとしてインデックスを作成する必要があります
  3.  ソートクエリフィールドのインデックスを作成するには大幅にインデックスをソートすることであるプラスクイック検索(ソートの速度を向上します
  4.  クエリ統計またはパケットフィールド。

 

 第六に、彼らはインデックスを作成していません

  1. 各アップデートがちょうど更新レコードではありませんので、頻繁に更新さフィールドは、インデックスを更新する、インデックスファイルが保存され、インデックスを作成するには適していません
  2. 条件が少ない分野でよりされる場合には、インデックスを作成しないでください。
  3. テーブルのレコードは、あまりにも、インデックスを作成する必要はありません。
  4. テーブル頻繁付加および欠失。
  5. データの重複や電界分布の平均値、インデックス、したがって、多くの場合、ソートフィールドの頻繁に照会。一部のデータが重複データを多く含むことに注意してください、彼は、このような性別フィールドとして多くの効果を持っていないように、インデックス、唯一の男性と女性ではなく、インデックス付けに適しています。

 

インデックスカテゴリの七:

  1. 通常のインデックス:基本的な指標は、それが任意の制限はありません。
  2. 唯一のインデックスは:インデックス列の値が一意である必要があり、それが列の値は一意である必要があり、複合インデックスであれば組み合わせは、空にすることはできません。
  3. 主キーのインデックス:特別なインデックスは、一意のレコードを識別し、一般的に主キーを拘束するために使用され、空にすることはできません。
  4. 共同インデックス:複数のフィールドにインデックス、クエリの速度を加速することができ

 

 八、インデックス作成と最適化SQL文

 

1、インデックスを使用することはできませんあいまいクエリをリードし、

  「%静的」のような名前

 

2、ユニオン、中、またはあなたがインデックスを打つことができ、で使用することをお勧めします

 

3、クエリの負の条件がインデックスを使用することはできません、クエリで最適化することができ、

  前記負の条件!ない他のと同様に、存在していない=、<>、ない、で

 

また、一番左のクエリとして知られている共同インデックスの4、最も左接頭原理、

  (a、b)は| |(a、b、c)は、クエリの速度の三つのグループ(a、b、c)は、三つのフィールドに関する共同インデックスの設立した場合、スピードアップすることが可能です。

 

5、共同問い合わせの設立、左端のフィールドの最高の区別

 

関節指数が(A、B)を設立した場合6は、別のインデックスを構築する必要はありません。

  同様に、(a、b、c)は、インデックスの設立は、(a、b)はインデックスを確立する必要がない場合

 

図7は、等号および非混合等号の決意条件、索引付け、べき数条件カラムプリデコーダあります

 

図8に示すように、カラムの範囲は、インデックスが、インデックスを使用できない列の後ろに列の範囲を使用することができます。

  インデックスの列の範囲までは、クエリが列の2つのフルレンジを持っている場合は、インデックスを使用することはできません。レンジ条件:<、<=、>、> =、などの間。

 

図9に示すように、層ではなくデータベースに算出ビジネス層。

  インデックスの計算は、フィールド上でヒットすることはできません

 

10は、全表スキャンをキャストします、

  電話がvarcherフィールドタイプである場合は、以下のSQLインデックスがヒットすることはできません。どこの電話= 13800001234 * FROMUSERを選択

 

11、差別ではない索引データに、非常に頻繁に更新は高いフィールドではありません。

  更新は大幅にデータベースのパフォーマンスが低下することがB +ツリー、頻繁に更新されるフィールドのインデックスを変更します。

  「ジェンダー」この差別が大きすぎプロパティではありません、インデックスは無意味である、効率的にデータをフィルタリングし、全表スキャンと同様の性能はできません。

  一般的な80%以上の判定を索引付けすることができます。識別は、カウント(異なる(列名))/カウント(*)を使用して計算することができます。

 

12、テーブルに戻って避けるために、クエリをカバーするインデックスを使用。

  列が照会され、代わりに、行ロケータのロケータを介しこと列を得るためのインデックスから取得されたデータは、加速度を問い合わせることができ、「インデックスによって覆われるように構築されたクエリー列です」。

 

13、索引付けされた列は、NOT NULL制約をnullにすることと、デフォルト値を使用することはできません

 

14、又は多くのページング・シーンオーバーサブクエリ最適化に関連する遅延を使用して、

  MySQLのスキップ行をオフセット、むしろ、オフセット+ N行、及び列は、リターンN行をあきらめる前に、特にときに時間オフセットことが、効率は、どちらか返さ制御の総数が非常に低い場合、又は特定の閾値を超えてオフセットしませんSQL書き換えページ。

 

15、複数のフィールドの組み合わせは、一意のインデックスが完了しなければならないだけでも、フィールド動作特性、。

 

16、最高ではない以上、3つのテーブルを結合を使用します、

  クエリに関連付けられたフィールド、データ型が一致していなければならない、マルチテーブルに参加する必要があり、フィールドはインデックスを持つ必要性と関連していることを確認してください。

 

17、リミット1、明確なノウハウ限り、クエリの結果は、ログイン時に、このような検証としての効率を向上させることができます。

 

18、Selectステートメントは、フィールドの名前を指定することが確実です

 

19、ソートフィールドをソートにできるだけ、インデックスに使用されていない場合

 

労働組合と労働組合の代わりに、可能な限りすべてとして20、。

  連合は、CPUの動作の多数をソートする必要ユニークなフィルタ操作の組み合わせセットを実行した後、リソース消費量と遅延を増やすには、もちろん、ない重複したデータ2つの結果セットという、すべての条件の組合を使用し必要。

 

21、合理的なページングの利用効率を向上させます。

  製品限界866613、20からID、名前を選択

ページングを行うには、SQL文を使用している場合、一部の人々はそれを見つけることができ、テーブルデータの量が増加すると、直接問い合わせページ制限が遅くなります使用します。

次のように最適化の方法は次のとおりです。

最大のIDに基づいて、次のページの開始点を制限するために、次に、行番号の最大数の前に取ることができます。

だから、最大の以前のIDより列は866612です。

ここで、ID> 866612限界20製品から選択ID、名前を次のようにSQLを書くことができます。

 まず、インデックスは何ですか?

  インデックスは、データベーステーブル内のインデックスすることができますすばやくアクセス固有の情報をランク付けを設定するための値またはデータベーステーブルの複数の列です。

 

第二に、インデックスの役割?

  帳簿上のディレクトリへのインデックスと同等、あなたはすぐにパフォーマンス(サーチアップ速度)を向上させるために、カタログのページ数に基づいてコンテンツを見つけることができます

 

第三に、利点:

  1. 一意のインデックスを作成することで、データベーステーブルのデータの各行の一意性を保証することができます。
  2. あなたは、データ検索の速度を加速することができます
  3. あなたは、テーブルとテーブルの間の接続を高速化することができます
  4. グループ化し、検索するために仕分け使用するときは、グループ化と並べ替えクエリ時間を短縮することができます

 

第四に、欠点

  1. インデックスを作成し、インデックスのメンテナンスは、データ量が増加の増加に伴い、この時間は時間がかかります。
  2. インデックスは、追加の物理的なスペースを必要とする大きなデータ量、より大きなスペース
  3. 毎回、必要性を動的に維持されるようにので、インデックスへの追加や削除のリストへの追加や削除の効率が低下します

 

第五に、あなたは、インデックスを作成する必要があります

  1.  主キーは自動的に一意のインデックスを作成します
  2.  頻繁にクエリフィールドとしてインデックスを作成する必要があります
  3.  ソートクエリフィールドのインデックスを作成するには大幅にインデックスをソートすることであるプラスクイック検索(ソートの速度を向上します
  4.  クエリ統計またはパケットフィールド。

 

 第六に、彼らはインデックスを作成していません

  1. 各アップデートがちょうど更新レコードではありませんので、頻繁に更新さフィールドは、インデックスを更新する、インデックスファイルが保存され、インデックスを作成するには適していません
  2. 条件が少ない分野でよりされる場合には、インデックスを作成しないでください。
  3. テーブルのレコードは、あまりにも、インデックスを作成する必要はありません。
  4. テーブル頻繁付加および欠失。
  5. データの重複や電界分布の平均値、インデックス、したがって、多くの場合、ソートフィールドの頻繁に照会。一部のデータが重複データを多く含むことに注意してください、彼は、このような性別フィールドとして多くの効果を持っていないように、インデックス、唯一の男性と女性ではなく、インデックス付けに適しています。

 

インデックスカテゴリの七:

  1. 通常のインデックス:基本的な指標は、それが任意の制限はありません。
  2. 唯一のインデックスは:インデックス列の値が一意である必要があり、それが列の値は一意である必要があり、複合インデックスであれば組み合わせは、空にすることはできません。
  3. 主キーのインデックス:特別なインデックスは、一意のレコードを識別し、一般的に主キーを拘束するために使用され、空にすることはできません。
  4. 共同インデックス:複数のフィールドにインデックス、クエリの速度を加速することができ

 

 八、インデックス作成と最適化SQL文

 

1、インデックスを使用することはできませんあいまいクエリをリードし、

  「%静的」のような名前

 

2、ユニオン、中、またはあなたがインデックスを打つことができ、で使用することをお勧めします

 

3、クエリの負の条件がインデックスを使用することはできません、クエリで最適化することができ、

  前記負の条件!ない他のと同様に、存在していない=、<>、ない、で

 

また、一番左のクエリとして知られている共同インデックスの4、最も左接頭原理、

  (a、b)は| |(a、b、c)は、クエリの速度の三つのグループ(a、b、c)は、三つのフィールドに関する共同インデックスの設立した場合、スピードアップすることが可能です。

 

5、共同問い合わせの設立、左端のフィールドの最高の区別

 

関節指数が(A、B)を設立した場合6は、別のインデックスを構築する必要はありません。

  同様に、(a、b、c)は、インデックスの設立は、(a、b)はインデックスを確立する必要がない場合

 

図7は、等号および非混合等号の決意条件、索引付け、べき数条件カラムプリデコーダあります

 

図8に示すように、カラムの範囲は、インデックスが、インデックスを使用できない列の後ろに列の範囲を使用することができます。

  インデックスの列の範囲までは、クエリが列の2つのフルレンジを持っている場合は、インデックスを使用することはできません。レンジ条件:<、<=、>、> =、などの間。

 

図9に示すように、層ではなくデータベースに算出ビジネス層。

  インデックスの計算は、フィールド上でヒットすることはできません

 

10は、全表スキャンをキャストします、

  電話がvarcherフィールドタイプである場合は、以下のSQLインデックスがヒットすることはできません。どこの電話= 13800001234 * FROMUSERを選択

 

11、差別ではない索引データに、非常に頻繁に更新は高いフィールドではありません。

  更新は大幅にデータベースのパフォーマンスが低下することがB +ツリー、頻繁に更新されるフィールドのインデックスを変更します。

  「ジェンダー」この差別が大きすぎプロパティではありません、インデックスは無意味である、効率的にデータをフィルタリングし、全表スキャンと同様の性能はできません。

  一般的な80%以上の判定を索引付けすることができます。識別は、カウント(異なる(列名))/カウント(*)を使用して計算することができます。

 

12、テーブルに戻って避けるために、クエリをカバーするインデックスを使用。

  列が照会され、代わりに、行ロケータのロケータを介しこと列を得るためのインデックスから取得されたデータは、加速度を問い合わせることができ、「インデックスによって覆われるように構築されたクエリー列です」。

 

13、索引付けされた列は、NOT NULL制約をnullにすることと、デフォルト値を使用することはできません

 

14、又は多くのページング・シーンオーバーサブクエリ最適化に関連する遅延を使用して、

  MySQLのスキップ行をオフセット、むしろ、オフセット+ N行、及び列は、リターンN行をあきらめる前に、特にときに時間オフセットことが、効率は、どちらか返さ制御の総数が非常に低い場合、又は特定の閾値を超えてオフセットしませんSQL書き換えページ。

 

15、複数のフィールドの組み合わせは、一意のインデックスが完了しなければならないだけでも、フィールド動作特性、。

 

16、最高ではない以上、3つのテーブルを結合を使用します、

  クエリに関連付けられたフィールド、データ型が一致していなければならない、マルチテーブルに参加する必要があり、フィールドはインデックスを持つ必要性と関連していることを確認してください。

 

17、リミット1、明確なノウハウ限り、クエリの結果は、ログイン時に、このような検証としての効率を向上させることができます。

 

18、Selectステートメントは、フィールドの名前を指定することが確実です

 

19、ソートフィールドをソートにできるだけ、インデックスに使用されていない場合

 

労働組合と労働組合の代わりに、可能な限りすべてとして20、。

  連合は、CPUの動作の多数をソートする必要ユニークなフィルタ操作の組み合わせセットを実行した後、リソース消費量と遅延を増やすには、もちろん、ない重複したデータ2つの結果セットという、すべての条件の組合を使用し必要。

 

21、合理的なページングの利用効率を向上させます。

  製品限界866613、20からID、名前を選択

ページングを行うには、SQL文を使用している場合、一部の人々はそれを見つけることができ、テーブルデータの量が増加すると、直接問い合わせページ制限が遅くなります使用します。

次のように最適化の方法は次のとおりです。

最大のIDに基づいて、次のページの開始点を制限するために、次に、行番号の最大数の前に取ることができます。

だから、最大の以前のIDより列は866612です。

ここで、ID> 866612限界20製品から選択ID、名前を次のようにSQLを書くことができます。

おすすめ

転載: www.cnblogs.com/ibos/p/12077072.html