2
  1. あなたの経験に基づいて、Postresql の 1 つのテーブルあたりのインデックス数に実質的な制限はありますか? 理論的には、ドキュメントによると、「テーブルあたりの最大インデックス数は無制限」という引用はありませんが、

  2. インデックスが多いほど、クエリが遅くなりますか? 数十のインデックスと数百のインデックス、さらには数千のインデックスがある場合、違いはありますか? postgres の部分インデックスに関するドキュメントを読んだ後で質問していますが、多くのインデックスを必要とする非常にクリエイティブなソリューションについて考えさせられます。

4

1 に答える 1

6

いくつかの異なる方法で多数のインデックスを使用すると、オーバーヘッドが発生します。

  1. もちろん、これは部分的なインデックスを使用すると低くなりますが、スペースの消費量。
  2. オプティマイザ プランの選択を潜在的により複雑にすることによる、クエリの最適化。
  3. 新しい行が挿入されたとき、または現在の行が削除または変更されたときにインデックスを変更する追加作業による、テーブルの変更時間。

デフォルトでは、次のようにインデックス作成に重点を置く傾向があります。

  1. スペースは一般的にかなり安いです
  2. 変数がバインドされたクエリは、一度だけ最適化する必要があります
  3. 通常、行は変更されるよりも頻繁に検出される必要があるため、行を変更する際のオーバーヘッドを削減するよりも、行を効率的に検索できるようにシステムを設計することが一般的に重要です。
  4. インデックスがたまにしか必要とされない場合でも、必要なインデックスがない場合の影響は非常に大きくなる可能性があります。

私は、200 を超える列があり、そのうちの 100 がインデックス化されている非正規化レポート テーブルを使用して Oracle システムで作業しましたが、問題はありませんでした。部分インデックスがあればよかったのですが、Oracle はそれらを直接サポートしていません (かなり不便な CASE ハックを使用します)。

したがって、長所と短所を認識している限り、先に進んで創造性を発揮し、システムに与える影響も測定することをお勧めします.

于 2013-08-29T11:51:07.600 に答える