ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 


ALTER INDEX文

索引を変更します。ALTER INDEX文は次のように使用できます。

次の変更はできません。


環境

ALTER INDEX文は次の環境で使用できます。


形式








引数

ADD PARTITION partition-name

名前付きパーティションを既存のハッシュ索引に追加します。パーティション名は、変更される索引内で一意である必要があります。

同一ALTER INDEX文内には他の句を使用できません。ADD PARTITION句の使用方法の詳細は、「使用方法」を参照してください。

BUILD ALL PARTITIONS

この句を作成ペンディング状態にある索引(MAINTENANCE IS ENABLED DEFERREDを使用して作成)に対して指定すると、すべて不完全なパーティションが作成されます。索引が作成ペンディング状態にない場合、この文は正常に完了し、警告が出されます。

同一ALTER INDEX文内には他の句を使用できません。

BUILD PARTITION partition-name

この句を作成ペンディング状態にある索引(MAINTENANCE IS ENABLED DEFERREDを使用して作成)に対して指定すると、指定されたパーティションが作成されます。索引が作成ペンディング状態にない場合、この文は正常に完了し、警告が出されます。

同一ALTER INDEX文内には他の句を使用できません。

COMMENT IS 'string'

索引に関するコメントを追加します。SQLでは、SHOW INDEX文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

DROP PARTITION partition-name

名前付きパーティション内のデータをマップ内の次のパーティションへ移行し、その名前付きパーティションを削除するように指定します。索引内の最後のパーティションは削除できません。また、被参照記憶域は削除されず、その記憶域に格納されている索引パーティションのみ削除されます。

DUPLICATES ARE ALLOWED

一意索引を非一意索引に変換します。この方法で変更された索引では、キー値を索引に複製できます。ただし、ALTER INDEX文をコミットすると、索引を削除して再定義する以外に変更を元に戻す方法はありません。

IN area-spec

このIN area-specをADD PARTITION句の中に指定すると、索引に新規のパーティションが挿入されます。WITH LIMIT OF句またはOTHERWISE句を指定しない場合は、IN area-spec句では新規のパーティションが最後尾に作成されます。

このIN area-specをSTORE句の一部として指定すると、いずれか1つの記憶域に索引が直接関連付けられ、その索引内のエントリすべてが、指定した記憶域に格納されます。

index-name

索引の名前です。

index-store-clause

索引の記憶域マップ定義です。複数ファイルのデータベース内の索引にかぎり、STORE句を指定できます。STORE句では、索引エントリの格納に使用する記憶域ファイルを指定できます。

記憶域マップ定義を省略すると、デフォルトでは、索引のすべてのエントリがデフォルトの記憶域に格納されます。

index-store-clauseの引数の詳細は、「CREATE INDEX文」を参照してください。

LOGGING

NOLOGGING

LOGGING句は、新規索引のパーティションに対するアップデートがリカバリ・ユニット・ジャーナル・ファイル(.ruj)とアフター・イメージ・ジャーナル・ファイル(.aij)に記録されることを指定します。

NOLOGGING句は、新規索引のパーティションに対するアップデートがリカバリ・ユニット・ジャーナル・ファイル(.ruj)とアフター・イメージ・ジャーナル・ファイル(.aij)に記録されないことを指定します。

STORE句を使用しない場合、これらの属性がALTER INDEX文の設定を指定します。

LOGGING句およびNOLOGGING句は相互に排他的です。1つのみ指定してください。デフォルトはLOGGING句です。

MAINTENANCE IS DISABLED

指定した索引を削除せず、無効にします。

規模が非常に大きなデータベースを管理している場合、索引が破損したり、索引が問合せの最適化に適さない場合があります。また、索引を定義した表のサイズが非常に大きい場合、DROP INDEX文の実行に時間がかかることがあります。ALTER INDEX文のMAINTENANCE IS DISABLED句を使用すると索引が無効になるため、オプティマイザで使用されなくなり、メンテナンスも行われません。これにより、後で表が使用中の場合でもDROP INDEX文を実行できます。

無効になった索引は、REBUILD PARTITION句を使用して再度有効にできます。

索引を無効にするには、その索引が定義されている表に対するDROP権限が必要であり、その表へのアクティブな問合せは必要ありません。

MAINTENANCE IS ENABLED DEFFERED

この句を使用して作成した索引には、表の現在行の索引キーが含まれません。(ALTER INDEX...BUILDを使用して)索引が作成されるまで、索引は作成ペンディング状態に置かれます。作成ペンディング状態の索引がある表は、INSERT文、DELETE文、またはUPDATE文では更新できません。

MAINTENANCE IS ENABLED IMMEDIATE

CREATE INDEXのデフォルトの動作です。ALTER INDEXにこの句を指定すると、作成ペンディング状態の索引を完全に使用可能な状態にできます。

MOVE PARTITION partition-name TO area-spec

名前付きパーティション内のデータをarea-spec句で識別されるパーティションへ移動し、データの移行後に現在のパーティションを削除するように指定します。たとえば、相当数の複合領域が拡張されている場合、この句を指定すると、ハッシュ索引の単一のパーティションをより大きい記憶域に移動できます。

同一ALTER INDEX文内には他の句を使用できません。

NODE SIZE number-bytes

ソート索引における各索引ノードのサイズ(バイト)を指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。NODE SIZE句の詳細は、「CREATE INDEX文」を参照してください。

この新しいノード・サイズは、既存の索引には適用されません。ただし、それ以降の再構築や、データベースを再構築する際のEXPORT/IMPORTでは使用されます。

PARTITION name

パーティションに名前を付けます。言語がSQL99に設定されている場合、または引用ルールがSQL99に設定されている場合、名前はデリミタ付き識別子として使用できます。パーティション名は索引内で一意である必要があります。この句を指定しない場合は、Oracle Rdbでパーティションのデフォルト名が生成されます。パーティション名は、データベースに格納され、検証されます。

PERCENT FILL percentage

各索引ノードの最大使用率をそのサイズの割合で指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。有効範囲は1〜100パーセントです。デフォルトは70パーセントです。

PERCENT FILL句およびUSAGE句は両方とも、索引ノードを最初にどの程度占有するかを指定します。PERCENT FILL句またはUSAGE句のいずれかを指定し、両方は指定しないでください。

PREFIX CARDINALITY COLLECTION IS DISABLED

これを設定すると、カーディナリティ収集が無効になり、かわりに、適切に調整された索引ツリーを想定した固定スケール・アルゴリズムが使用されます。またこの句のアクションにより、既存の索引列のカーディナリティがゼロに設定されます。

PREFIX CARDINALITY COLLECTION IS ENABLED

CREATE INDEXのデフォルトの動作です。Oracle Rdbのオプティマイザでは、索引列のカーディナリティの概算値を収集して、将来の問合せの最適化に役立てます。これらの値を収集するための特別なI/Oは発生せず、したがって、他の索引ノードの隣接したキー値はチェックできません。そのため、これらの索引は不正確になる可能性があります。ただし、通常の問合せの最適化には十分です。現在、PREFIX CARDINALITY COLLECTION DISABLEDに設定されている索引にこの句を使用する場合は、できるかぎり速やかにRMU Collect Optimizer_Statisticsコマンドを実行し、正確な値をロードする必要があります。

PREFIX CARDINALITY COLLECTION IS ENABLED FULL

これを設定すると、必要に応じて特別なI/Oの実行がリクエストされ、隣接した索引ノードのキー値の変更がカーディナリティ値に反映されるようになります。現在、PREFIX CARDINALITY COLLECTION DISABLEDまたはENABLEDに設定されている索引にこの句を使用する場合は、できるかぎり速やかにRMU Collect Optimizer_Statisticsコマンドを実行し、正確な値をロードする必要があります。

REBUILD ALL PARTITIONS

この句を使用すると、TRUNCATE処理およびBUILD処理を単一のファンクションに組み合せることができます。同一ALTER INDEX文内には他の句を使用できません。

REBUILD PARTITION partition-name

この句を使用すると、指定したパーティションに対し、TRUNCATE処理およびBUILD処理を単一のファンクションに組み合せることができます。同一ALTER INDEX文内には他の句を使用できません。

RENAME PARTITION partition-name TO new-partition-name

パーティション名を変更します。この句は、すべてのタイプの索引に適用できます。特に、デフォルト・パーティションによりわかりやすい名前を指定する場合に便利です。SHOW INDEX (PARTITION)文を使用してパーティションのデフォルト名を表示します。「例」の項の「例4」を参照してください。

同一ALTER INDEX文内には他の句を使用できません。

threshold-clause

threshold-clauseの詳細は、「CREATE INDEX文」を参照してください。

TRUNCATE ALL PARTITIONS

この句はTRUNCATE TABLEと同様に機能しますが、1つの索引のみを対象とします。索引は、現在ENABLED IMMEDIATEが指定されている場合、自動的にMAINTENANCE IS ENABLED DEFERRED(作成ペンディング状態)に設定されます。それ以外の場合は、無効な状態のままとなります。

同一ALTER INDEX文内には他の句を使用できません。

TRUNCATE PARTITION partition-name

この句は、指定した索引パーティションにのみ機能します。索引は、現在ENABLED IMMEDIATEが指定されている場合、自動的にMAINTENANCE IS ENABLED DEFERRED(作成ペンディング状態)に設定されます。それ以外の場合は、無効な状態のままとなります。

同一ALTER INDEX文内には他の句を使用できません。

USAGE UPDATE

USAGE QUERY

更新集約型のアプリケーションまたは問合せ集約型のアプリケーションに適したPERCENT FILL値を指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。USAGE UPDATE引数では、PERCENT FILL値を70パーセントに設定します。USAGE QUERY引数では、PERCENT FILL値を100パーセントに設定します。

PERCENT FILL句またはUSAGE句のいずれかを指定し、両方は指定しないでください。

USING (column-name)

複数の記憶域で索引をパーティション化するための制限として値を使用する列を指定します。索引キー・セグメントとして指定されていない列は指定できません。

索引キーが複数セグメントである場合、結合されて索引キーを形成する列の一部または全部を含めることができます。列は、索引キーの定義時に指定した順序で指定する必要があります。複数セグメント索引から列サブセットのみを含める場合、索引キーの先頭の列を必ず含めてください。

WITH LIMIT OF (literal)

ASCENDINGが定義されている場合は、特定の記憶域に常駐する索引キーの最大値を指定します。DESCENDINGが定義されている場合は、特定の記憶域に常駐する索引キーに対して最小値が指定されます。索引キーが複数の列で構成されている場合は、USING句にリストされている各列のリテラル値を指定します。

WITH LIMIT OF句では、パーティションに対する一意の値セットを新規に指定する必要があります。リスト内のリテラルの数は、USING句の列の数と同じである必要があります。リテラルのデータ型は列のデータ型と一致する必要があります。文字の列の場合は、リテラルを一重引用符で囲みます。


使用方法