プロが教える本番環境に影響を与えずに索引を検証する方法

対応の内容

ORACLEの索引には通常は利用されない索引を作ることが可能です。
不可視索引といいいます。
この不可視索引は個別にSQLにヒントを追記してやることでオプティマイザが検討対象にします。

事前の確認

オプティマイザが通常、不可視索引を利用しない設定になっていることを確認。
下記パラメータがfalseであればOKです。

show parameter optimizer_use_invisible_indexes;

索引の作成

索引作成時にinvisibleオプションをつけて作成します。

–create index 索引名 on 表名(列名) invisible;
create index TABLE1_INDEX_01 on TABLE1(col1) invisible;

索引の利用

use_invisible_indexesヒントを追加してSQLを実行することで不可視索引が検討対象になります。

select /*+ use_invisible_indexes */ * from TABLE1 where col1 = ‘test’;

索引の属性変更

不可視索引を通常の索引として利用したい場合は索引の属性を変更してください。

–alter index <インデックス名> visible
alter index TABLE1_INDEX_01 visible;