ここでは、パフォーマンスの問題の改善策としてインデックスを追加することを推奨します。データベースインデックス:良いこと、悪いこと、時間の無駄ですか?
(私は、&を読むことについてのみ話しています、我々はすべてのインデックスが書き込みを遅くすることができます知っている)。
私はDB2とMSSQLの両方で長年何度もこの救済策を試してきましたが、結果はいつも失望していました。
私の知見は、インデックスがより良いものになるということが明らかであっても、クエリオプティマイザがよりスマートで、巧みに選ばれたインデックスがほとんど常に物事を悪化させたことが判明しました。
私の経験は主に小さなテーブル(< 100,000行)に関連していることを指摘しておきます。
索引付けの選択肢に関する詳細なガイドラインはありますか?
正解は推奨事項のリストになり、何かのように:
- ネヴァー/常にインデックスより
- は常にマルチフィールドキー 上のインデックスを考慮しない/決してNNNNレコード未満とテーブル/
- 決して/常にクラスタ化インデックスを使用
- 決して/常に単一のテーブル
- にNNNインデックスよりも絶対に使用しないでください/常にとき[I、約学ぶために死んだいくつかの魔法の条件]インデックスを追加
理想的には、答えはいくつかの参考になる例を示します。
すべてはディスクの速度とメモリのサイズなどによって異なります。 – Gabe
まず、質問を編集してください。 ** **インデックスを追加するだけで、クエリーを高速化し、遅くすることはありません。あなたが尋ねることは、クエリオプティマイザ**がインデックスを使用することを指定することです。実際には自分自身で行うことをオーバーライドします。クエリが遅くなる可能性があります。 –
@Charles Bretana:インデックスを追加するCANオプティマイザが不正なプランを選択するか、または他のインデックスの使用に悪影響を与える場合は、クエリを遅くします。また、インデックスを追加すると、一般に挿入/更新/削除が遅くなります。 – sqlvogel