10

データベースに多数のインデックスがある場合、パフォーマンスが大幅に低下する可能性があることを読みましたが、PostgreSQL のドキュメントではそれについて何も見つかりません。

100 列と 10 億行のような非常に大きなテーブルがあり、多くの場合、さまざまなフィールドで多くの検索を行う必要があります。

多数のインデックス (おそらく 10 個の一意の列インデックスと 5 または 7 個の 3 列インデックス) を追加すると、PostgreSQL テーブルのパフォーマンスは低下しますか?

編集:パフォーマンスの低下とは、行のフェッチ(選択)のパフォーマンスを意味し、データベースは月に1回更新されるため、更新と挿入の時間は問題になりません。

4

3 に答える 3

12

INSERTテーブルの内容が変更された場合 (つまり、UPDATEDELETE) 、インデックスは維持されます。

PostgreSQL のクエリ プランナーは、いつインデックスを使用するか、いつインデックスが不要であり、シーケンシャル スキャンがより最適であるかを決定できます。

したがって、インデックスが多すぎると、フェッチではなく変更のパフォーマンスが低下します。

于 2012-09-27T19:26:52.837 に答える
1

insertインデックスは、それらの列を含む各列で更新する必要がありupdateます。

于 2012-09-27T19:26:39.717 に答える
0

私のサイトにはそれに関するいくつかのチャートがあります:http://use-the-index-luke.com/sql/dml

インデックスは純粋な冗長性です。テーブルにも格納されているデータのみが含まれます。書き込み操作中、データベースはこれらの冗長性の一貫性を維持する必要があります。具体的には、挿入、削除、および更新がテーブルだけでなく、影響を受けるデータのコピーを保持するインデックスにも影響することを意味します。

章のタイトルは、インデックスが持つ可能性のある影響を示唆しています。

挿入 — インデックスから直接利益を得ることはできません

削除 — where 句にインデックスを使用します

更新 — テーブルのすべてのインデックスには影響しません

于 2012-09-28T05:32:36.103 に答える