誰かがインデックスが悪いインデックスであることを教えてもらえますか?(DBMS内の)インデックスが不良インデックスとなるのはいつですか?
答えて
索引付けされた列が検索されず、表が大幅に更新されている場合、索引が対象とするパフォーマンスの利点はありません。逆に、パフォーマンスが低下する可能性があります。
ありがとうございました – Anoop
インデックスは、より高速に行を検索するのに役立ちます。
インデックス列がで、検索に使用されていない場合は、と定義する必要はありません。
は非常に頻繁にを変え続けるその列の値は、それが(インデックスの再作成のための)データベース・サーバのための余分な作業になる場合
があまりにも多くのインサートがあり、テーブルからを削除した場合サーバの余分な仕事になる
インデックスが列のセットに含まれている可能性があることを忘れないでください。 –
ありがとうございます。しかし、どのようにインデックス付きの列はできません頻繁に使用 – Anoop
@ジョハサンは事実のためにありがとう @テーブルから行を選択するためのjoinまたはwhere句で索引付けされた列を使用していない場合は、venkatはあまり使用されません。 – TheVillageIdiot
同じ列を使用する別のインデックスがある場合は、インデックスがかなり無条件に悪い状況がある(と同じ接頭辞として順):
CREATE INDEX ix_good ON SomeTable(Col1, Col2, Col3);
CREATE INDEX ix_bad ON SomeTable(Col1, Col2);
悪いインデックスは、ディスクスペースの無駄ですし、無利益のために業務を変更する速度が遅くなります。
+1ですが、「同じ順序」の部分を強調します。 :) – KristoferA
ありがとうございました – Anoop
)。あなたは通常、速いスキャンの利点を得るためにそのヒットを望んでいます。利益を得られないときは純損失であり、それは悪い指数です。
考えられる理由:
- インデックス
- 冗長インデックス
- 非常に頻繁にスキャンしたが、テーブルがあるので、インデックスを持つのヒットが利益をoutgrows(継続的に更新されていないテーブルを使用したことがありませんほとんどスキャンされません)。
- 頻繁にスキャンされ、連続的に更新されるテーブル。この場合、挿入/更新のためのインデックスのないテーブルと、毎日または毎時のバッチで更新されるインデックスのテーブルを持つことによって、インデックスとスニッピーな更新/挿入の両方の利点を得ることができますこのような場合に重大なパフォーマンス上の問題が発生した場合は、ハードウェアを改善したり、アプリケーションを再設計する必要があります。
どのように悪いインデックスを見つけるには?ほとんどのRDBMSには、クエリプランを表示するオプションがあります。そこには、設定したインデックスが期待どおりに使用されているかどうかが表示されます。これは最終的なアドバイスにつながり、あなたのインデックスについて考えてください。決して「正しい」ものを作成することはありません。
索引は検索しないと悪いです。たとえば、インデックス(Col1、Col2、Col3)は、同じクエリでCol1、Col2、およびCol3を使用して検索しないと、リソースの無駄です。
インデックス(前述の「実際の使用」の部分を除いて)に留意する重要なことは、選択性の概念です。
インデックスを作成するときは、「高い選択性」の可能性が高い列にインデックスを作成する必要があります。これには、列内のデータを理解する必要があります(ドメインの知識/サンプルデータの可用性に応じて、またはそうでないかもしれません)。
選択性=個別値の#/行
の合計#は、そのような列にインデックスを作成するテーブルGIVEN_NAME、姓の列と「人」、性別、たとえば年齢
を、使用できるようにしますジェンダー(性別がNULL、MまたはFに制限されている)がクエリ中に大きな利益をもたらさない(特にクエリが既に他の理由でテーブルスキャンを実行している場合)。いずれのシナリオにおいても、この指標の選択性は極めて低い。 DBMSによっては、このインデックスを使用すると実際にはテーブル全体のスキャンが悪化する可能性があります。
ただし、(Given_name、Surname)にコンポジットインデックスを作成すると、これらの列に対してクエリを実行するときにメリットが得られます。このインデックスの選択性(ほとんどの人口)はかなり良いでしょう。
1の選択性を持つ索引が理想ですが、選択度1を達成する唯一の方法は、null不可能な列に一意の索引を付けることです。
また、インデックスとその選択性を「把握する」ためのクエリを簡単に作成できることに注意してください。
- 1. いつMYSQLの1つのインデックスよりも2つより良いインデックス
- 2. Rails WeekdayのインデックスとRubyのインデックスが異なるのはなぜですか?
- 3. 空間インデックスと2つの座標インデックス
- 4. R、不明なインデックスでの分割ベクトル
- 5. クラスタ化インデックスと非クラスタ化インデックスの違いは何ですか?
- 6. MySQLインデックス:2つのフィールドのインデックス方法の違いは何ですか?
- 7. インデックスの範囲外例外とインデックスの境界外のインデックスとの違いは何ですか?
- 8. 不明な理由でAndroidカーソルのインデックスが外に出る
- 9. データウェアハウス内のインデックス
- 10. 不要な配列のインデックスJSON.stringify
- 11. 弾性検索ではないインデックス**いくつかのドキュメント**
- 12. マージンの不一致、Z-インデックス?
- 13. 2つのインデックスでMERGE JOINがSORTの原因となっていますか?
- 14. 2d配列の特定のインデックスのインデックスを調べる最も良い方法
- 15. インスタンス配列のインデックスが不定
- 16. インデックスのビューのスキーマを変更すると、インデックスが削除されるのはなぜですか?
- 17. インデックスではどのようにインデックスが機能しますか?
- 18. インデックスが断片化しているのはなぜですか?
- 19. インデックスを使用不能にしてからインデックスで再構築する方法
- 20. mongodumpがインデックスをバックアップしないのはなぜですか?
- 21. ユニークなインデックスへのユニークでないインデックスの変更
- 22. CSS:三つの異なるプラグインの間のzインデックスとの競合は、Zインデックスが効果
- 23. インデックスが存在しない場合のインデックスの作成
- 24. テーブルにインデックスを追加するのはいつですか?
- 25. postgresqlインデックス内でNULLsがスペースを占有するのですか?
- 26. iframe内のZ-インデックス
- 27. データベース内のLuceneインデックス
- 28. ループ内のインデックスXSL
- 29. mysqlの日時フィールドをインデックスするのは良い考えですか?
- 30. luceneインデックスでJDBCを使用するのは良い考えですか?
あなたの質問(およびそのタイトル)を再作成することができます。たぶんあなたは "SQLテーブルの不良インデックス" - "インデックスを悪いインデックスとして定義して置き換えるには何のパラメータを取るべきですか?" –
ある時にインデックスがありました。しかし、これは普通の指数ではありませんでした。それは正常に見えましたが、それは悪い指数でした。誰も気付かれなければ、それは完全な混乱の中で葉のノードにぶら下がっている葉のノードと不均衡になった。リーフノードが多すぎるばかりでなく、悪い統計情報の集まりも出ていました。そしていつか、DBCCと呼ばれる妖精が来て、「なぜあなたは悪い指数ですか?他のすべての指数と同じように良い指数にならないのですか?彼女は彼女の魔法杖と再索引を振った。その後、悪い統計情報がなくなるように統計を更新しました。インデックスは妖精に言った "... – KristoferA
おかげで素晴らしい説明 – Anoop