パーティションテーブル グローバルインデックスの注意点
パーティションテーブルの思わぬ落とし穴をここに残します。
まだ、調査段階なので 第一弾ってところです。
1、パーティションのindex運用の課題
パーティションテーブルで、グローバルインデックスを使用している場合、
INDEXが使用不可となりパフォーマンス低下!
2、回避案(案)
調べたところ、以下3つ案が見つかったので残します。
※検証は後日実施予定
①オンラインでグローバルインデックス作成
CREATE INDEX 索引名 ON パーティション表名(列名) LOCAL;
データを削除してから行うことで、UNUSABLEにしないようにできます。
③ローカルINDEXに変更
※オンラインでの変更手順は探せなかった・・ので、作業中は一時的にindexがない状態となる
1,create unique index PK名 on スキーマ.テーブル名_BK ("CLIENT_ID","CAR_DAY_DATE","STOCK_ID") LOCAL;
2,alter table スキーマ.テーブル名 ADD CONSTRAINT PK名 PRIMARY KEY ("CLIENT_ID","CAR_DAY_DATE","STOCK_ID") USING INDEX tablespace PK表領域;
Appendix
L技術情報
表のパーティション・タイプの確認
SELECT table_name,partitioning_type,partition_count
FROM dba_part_tables;
各パーティション表定義の確認
select table_name,partition_name,high_value
from dba_tab_partitions;
統計情報の取得もパーティション単位で可能
BEGIN DBMS_STATS.GATHER_TABLE_STATS
END;
/
パーティションアドバイザ