Oracleはユーザー・インデックスの使用状況を監視し、不要なインデックスを削除します.
1099 ワード
1.現在のユーザーのすべてのインデックスを監視する
すべてのインデックスを監視する文:
select 'alter index ' || index_name || ' monitoring usage;' from user_indexes;
2.しばらくしてから使用されていないインデックスをクエリーし、不要なインデックスを削除
注意:具体的な業務状況に応じて、1週間後、1月後、2月後を選択します(つまり、アプリケーションのすべてのSQLが少なくとも1回走ることを保証します)
2.1この期間に使用されていないインデックスを表示します.
select * from v$object_usage where used='NO';
2.2使用されていないインデックスを削除する文:
select 'drop index '||o.index_name||';' from v$object_usage o join user_indexes u on o.index_name = u.index_name where o.used='NO' and u.uniqueness='NONUNIQUE';
特に注意:直接drop index操作では、使用されていないインデックスでは、プライマリ・キーは削除されません(エラーORA-02429が与えられます)が、一意性インデックスは削除されます.だからここでjoinしたuserindexesは,NONUNIQUEのインデックスのみを削除すると判断する.
3.ユーザーのすべてのインデックスの監視を停止する
すべてのインデックスの監視を停止する文を取得します.
select 'alter index ' || index_name || ' nomonitoring usage;' from user_indexes;