3

PostgreSQL では、基本的に条件述語を含むインデックスである「部分インデックス」を作成できます。http://www.postgresql.org/docs/8.2/static/indexes-partial.html

テスト中に、クエリが 12 万行のテーブル内の特定の 12 行のみにアクセスしている場合に、それらが非常にうまく機能することがわかりました。

しかし、これを展開する前に、知っておくべき欠点や注意事項はありますか?

4

2 に答える 2

6

主な注意点は、それらを不適切に使用しないことです。これらは、大きなテーブルの少数派である1セットの基準に一致する行を識別するのに適しています。

Ordersたとえば、order_status次のように、注文ステータス全体のデータの列と分布を含む表を取り上げます。

  • 新しい5%
  • 入荷待ち2%
  • 輸送中5%
  • 85%完了
  • 3%を返しました

新しい注文のリストを取得するために頻繁にクエリwhere order_status = 'New'を実行し、それ以外のほとんどの場合、IDで直接注文を参照する場合は、部分インデックスが役立ちます。120kのうち12行の例では、これはさらに当てはまります。

于 2008-12-23T04:18:31.343 に答える
5

プロ:

これにより、インデックスのサイズが縮小され、インデックスを使用するクエリが高速化されます。また、すべての場合にインデックスを更新する必要がないため、多くのテーブル更新操作が高速化されます。

短所:

これはもはや実際のインデックスではないため、インデックスでカバーされていない値に対して完全結合またはフィルタリングを行うと、テーブル サイズが大きくなるにつれてパフォーマンスが低下します。

于 2008-11-12T09:32:17.773 に答える