パーティションプルーニング101
ppを機能させる条件
1) パーティションキーをwhere区に含ませる
PP適用確認方法
explainを実行しOperation に :
1) Partition Range All とあればPP無効
2) Partition Range Iterative
2-1) PStart/PStopに数値があれば静的PP適用
2-2) PStart/PStopにKEYとあれば動的PP適用
パーティショニングBP
- 週単位の検索が多いなら週単位のレンジパーティショニングにすると早くなる
- データがメモリに乗りきるレベルのレンジでパーティションを作る。結果ディスクアクセスを減って早くなる
https://www.atmarkit.co.jp/ait/articles/0612/27/news093_4.html
パーティション・プルーニングから最大限のパフォーマンスを得るには、データベースによって変換が必要となるデータ型を指定しないようにしてください。データ型が変換されると、その他の点で静的プルーニングが可能な場合でも、通常は動的プルーニングが行われます。静的プルーニングを利用するSQL文は、動的プルーニングを利用するSQL文よりもパフォーマンスが高くなります。
静的パーティション・プルーニング計画を保証するには、パーティション列のデータ型と一致するようにデータ型を明示的に変換する必要があります。
関数を使用した場合、その戻り値の型変換を行う場合も同様
カスタム関数を使用するとPPは行われない
レンジ・パーティション (Range Partition)
レンジ・パーティションを使用する例として非常に有用と思われるのが日付によるパーティショニングである。 例えば、月毎にパーティション化を行ない、保持期限が終了したらバックアップ媒体などに保管したのち パーティションごとトランケートするなどである。
- パーティション・プルーニング対象条件述語
等価、範囲指定(< , > , BETWEEN a AND b など)、前方一致の LIKE または IN (...) -
https://www.shift-the-oracle.com/table/partition-table.html#p1ffcd8c
partition keyのフィルタリング条件に関数を使用しない(p.161)
https://www.oracle.com/technetwork/database/partitioningguidev43-2703320.pdf
チューニング
https://www.oracle.com/technetwork/jp/ondemand/branch/20120718-indextuning-1703878-ja.pdf
- INリスト条件ほかconditions