Database OracleDB インフラ

[OracleDB] インデックス再作成・変更の「alter index」文とポイントを紹介

投稿日:2018年6月26日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

Oracle Databaseのインデックス再作成・変更SQLalter index」とそのポイントを紹介します。

alter index」は各種メディアやブログで紹介されており、指定できるパラメータも多くあります。

この記事では初心者向けにインデックスを再作成・変更する時の重要なポイントも合わせて紹介します。

この記事はB-Treeインデックスについての記載しますので、その他のインデックスについては別記事で紹介します。

この記事の内容

  • インデックス再作成・変更のSQL「alter index」の基本構文
  • インデックスの格納先表領域の変更
  • インデックスの利用有無

インデックス再作成・変更のSQL:alter index

alter indexの基本構文は↓になります。

[各種操作]でインデックスの再作成・変更を指定します。

インデックスの再作成:rebuild

インデックスの再作成を行うには、「rebuild」句を指定します。

インデックスを長い期間使っているとインデックスの断片化ブロックの偏りが生じるため、

インデックスが原因で性能劣化が発生します。

インデックスの再作成中はインデックスを利用出来なる点に注意しましょう。

下がサンプルのSQL文になります。

オンライン中のインデックスの再作成:rebuild online

オンライン中にインデックスの再作成を行うには、「rebuild online」句を指定します。

オンライン中とは「データベースに問い合わせが来ている」状態を指します。

ただし以下の制限事項があるので注意が必要です。

  • オンラインインデックスの作成中は、パラレルDMLはサポートされていません。パラレルDML文を発行すると、ORAエラーを戻します。
  • ビットマップ結合インデックスまたはクラスタインデックスには指定できません。
  • インデックス構成テーブルの一意でない2次インデックスの場合、構成テーブルのインデックスキー列の数とROWIDの主キー列の数の合計はを32以下にする必要があります。ROWIDはインデックスキーに含まれる列を除外します。

下がサンプルのSQLになります。

インデックスの格納先表領域を変更:rebuild tablespace

インデックスの格納先表領域を変更するためには「rebuild tablespace」句を指定します。

下がサンプルのSQLになります。

インデックスの利用有無(不可視索引の有効・無効化):visible / invisible

オプティマイザのインデックス利用有無を指定するのが「visible / invisible」です。

デフォルトでは。「visiable」を設定されます。

通常インデックスを問い合わせ時に使用しますが、「invisible」を指定しますと問合せ時にオプティマイザによって使用されません。

初期化パラメータ「OPTIMIZER_USE_INVISIBLE_INDEXES」をセッションまたはシステムレベルで明示的に「TRUE」に設定することで、

invisible」を指定したインデックスも使用されます。

使いどころとして、日中帯はインデックスを使用せず夜間のパッチ処理などがあります。

下がサンプルのSQLになります。

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.