の落とし穴(?)にハマりました…
パーティションキーを固定(バインド変数)で渡すような場合に、Oracleが強引にローカルパーティション索引の使用とパーティションプルーニングを行おうとした結果、非効率的な実行計画を立ててくれる場合がありました。
駆動表が他にあるので、そいつと結合するときにハッシュ結合すれば高速に動くのですが、わざわざネステッドループをかましてConsitents getsが1千万弱に…嫌がらせでつか?(つД`)
統計情報の取り直しや、ヒント文の付与、SharedPoolとバッファキャッシュのクリアなどを行ったが、全然効果なし。
ローカルパーティション索引のカーディナリティが高いわけでもなく、結合条件などを含めたら他にカーディナリティの高い索引があるのに…
とりあえず、レコード件数が億を余裕で超えている表だったので、索引項目を増やしたりはせず、索引をグローバルパーティション索引に変更。
原因がいまいちハッキリしていないので気持ち悪いのですが、今回はちょっぴり残念な結果に