数十万行のテーブルがあり、特定の日付範囲で作成された行を選択する必要があり、これが唯一の「where」句である可能性があります。クエリのパフォーマンスを向上させる方法はありますか? この「date_created」フィールドが挿入されたすべての行で常に増加している場合、B ツリー インデックスで毎日 (またはもっと頻繁に) テーブル クラスタリングが必要ですか?
1 に答える
1
これは、フィルタリングしている日付列でパーティション化する典型的なケースです。
ドキュメントでは、プロセスについて詳しく説明していますが、要約すると、次のようになります。
- 現在のテーブルから構造を継承する子テーブルを作成します
- 子テーブルに格納できる日付範囲を制限するチェック制約を作成します
- 「現在の」パーティションに挿入してから、適切な名前に変更するか、親テーブルにトリガーを設定して、挿入された行を関連するパーティションにプッシュします。
指定した日付範囲内のパーティションのみがクエリの実行中にスキャンされ、パフォーマンスが大幅に向上します。
于 2013-06-27T18:18:53.623 に答える