ここではORACLEデータベースで、インデックス(索引)を作成・変更・削除するSQLを紹介しています。
インデックスの一覧を確認する方法は↓で紹介しています。
>>【ORACLE】インデックスの一覧を確認するSQL
インデックス(索引)とは
インデックス(索引)とは書籍や本についている目次や索引と似たようなものです。
データを検索するときに、検索したいデータがテーブルのどのあたりに保存されているかを示してくれます。
これによりインデックスを使うことでテーブルへのアクセスを高速化することが出来ます。
インデックス(索引)を作成するSQL
インデックスの作成はCREATE INDEX文を使います。
インデックスの作成や変更、削除には↓の権限が必要です。
作成:CREATE ANY INDEX
変更:ALTER ANY INDEX
削除:DROP ANY INDEX
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL
CREATE INDEX文の基本構文
CREATE INDEXの基本構文は次の通りです。
CREATE [UNIQUE | BITMAP] INDEX インデックス名
ON スキーマ名.テーブル名(列名)
[TABLESPACE 表領域名]
[COMPRESS]
;
・[UNIQUE | BITMAP]
UNIQUE:列の値が一意である必要があることを指定
BITMAP:ビットマップインデックスを作成
・[TABLESPACE 表領域名]
インデックスを作成する表領域を指定
・[COMPRESS]
インデックスを圧縮します
CREATE INDEX文を使ったSQLサンプル
CREATE INDEX文のサンプルです。
次のSQLでは、1行目でTAB1テーブルのCOL1列を使って、インデックスを作成しています。
CREATE INDEX idx1 ON user1.tab1(COL1)
TABLESPACE tbs1
;
インデックスを変更するSQL
ALTER文を使うことで、インデックスを変更することが出来ます。
インデックス名を変更するSQL
ALTER INDEX idx1 RENAME tO idx2;
インデックスを再編成・別の表領域へ移動する
ALTER文でREBUILDを指定することで表の再編成(再作成)が出来ます。
ALTER INDEX idx1 REBUILD tbs1;
REBUILDで、別の表領域を指定すると、指定した表領域にインデックスを移すことが出来ます。
ALTER INDEX idx1 REBUILD tbs2
インデックスを圧縮する
ALTER INDEX idx1 COMPRESS;
インデックスを使用不可にする
ALTER INDEX idx1 UNUSABLE;
インデックスを削除するSQL
インデックスを削除するときはDROP文を使います。
DROP INDEX idx1;
まとめ
インデックスの作成はCREATE INDEX、変更はALTER文、削除はDROP文を使います。
インデックスの作成や変更、削除には↓の権限が必要です。
作成:CREATE ANY INDEX
変更:ALTER ANY INDEX
削除:DROP ANY INDEX
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL