今回は、、一般的なパーティションを作成した場合や、親子関係が複雑な場合にどのようにリファレンス・パーティションを作成すればよいのか、その時、性能差はあるのかについて検証します。TABLE構文を確認すると以下のことがわかりました。単一のパーティションしか定義できません。・親表のインターバル・パーティションをリファレンスすることができない前回の例であげた、売上明細表は、2つの親を持っているため(売上表と製品表)のどちらか片方のリファレンス・パーティションしか作成できません。売上明細をどのように検索する場合が多いかによって、作成すべきリファレンス・パーティションを決定する必要があります。県別に検索するケースが多い場合は、売上表を親表にします。+-------------+顧客表はJIS住所表の子表で、県コードは持っていません。売上表は顧客表の子表で、住所に関する情報は持っていません。売上明細表は、製品表と売上表の子表で、製品種別は持っていません。・顧客表に県コードを追加します。・売上表にも県コードを追加します。・売上明細表には、県コードと、製品種別を追加します。JIS住所表はリファレンス用に作成したものと同じです。この表はリスト・パーティションで作成します。(47));顧客表を作成します。(47))売上表を作成します。(47));製品表はリファレンス用に作成したものと同じです。この表はリスト・パーティションで作成します。(109));売上明細表を作成します。(109));前回の検証結果、パーティション化によって検索性能が向上するのは、単一のパーティションを使用する検索でしたので、全国の顧客数を調べる性能を検証しません。card=187288)トレースの結果を比較してみると、リファレンス・パーティションを使用した場合のほうが早いことがわかります。詳しく見てみるとJIS住所表と、顧客表ともにリストパーティションを持っていても顧客表のパーティションをすべて検索してしまっていますね。その結果、ディスクアクセスブロック数が多くなり、実行時間に差がでています。実行時間が4分の1程度ですのでリファレンス・パーティションの勝利です。card=19509)結果は、ほぼ同じでした。リスト・パーティションを独自に作成したCUSTOMER_LISTを検索した場合は、ディスクアクセスブロック数が少なくなっています。大きな表の場合は、個別にリストパーティションを作成したほうに軍配が上がるかもしれません。card=192290)リファレンス・パーティションを使用した場合ディスクアクセスブロック数が少なくなって、結果として早いことがわかりました。ディスクアクセスブロック数に差があるのでしょう。これは、リファレンス・パーティションでパーティション用のカラムの定義が必要ないからですね。・リファレンス・パーティションは複雑な親子関係には向かないOracleさんにリファレンス・パーティションとインターバル・パーティションがコンポジット・パーティション化できる機能の追加を期待して、リファレンス・パーティションについて検証を終わります。肩が痛い原因は、運動不足ですと医者に言われてリハビリを始めた爺でした。reserved.トップページ企業概要プライバシーポリシ。