1

数十万行のテーブルがあり、特定の日付範囲で作成された行を選択する必要があり、これが唯一の「where」句である可能性があります。クエリのパフォーマンスを向上させる方法はありますか? この「date_created」フィールドが挿入されたすべての行で常に増加している場合、B ツリー インデックスで毎日 (またはもっと頻繁に) テーブル クラスタリングが必要ですか?

4

1 に答える 1

1

これは、フィルタリングしている日付列でパーティション化する典型的なケースです。

ドキュメントでは、プロセスについて詳しく説明していますが、要約すると、次のようになります。

  • 現在のテーブルから構造を継承する子テーブルを作成します
  • 子テーブルに格納できる日付範囲を制限するチェック制約を作成します
  • 「現在の」パーティションに挿入してから、適切な名前に変更するか、親テーブルにトリガーを設定して、挿入された行を関連するパーティションにプッシュします。

指定した日付範囲内のパーティションのみがクエリの実行中にスキャンされ、パフォーマンスが大幅に向上します。

于 2013-06-27T18:18:53.623 に答える