ALTER INDEX

ALTER INDEXは索引(インデックス)を再構築するSQL文である。テーブルに行を挿入したり、削除したりを繰り返すと、インデックスが断片化を起こす。インデックスの断片化により、問い合わせの速度が遅くなってくる。これを解消するには、インデックスの再構築を行う。

Oracle

Oracle Database における ALTER INDEX 文の構文を以下に示す。

ALTER INDEX [schema.]name { REBUILD | RENAME TO new_name | UNUSABLE }
schema
索引のスキーマを指定する。スキーマの指定を省略した場合は、自分のスキーマ内の索引が対象となる。
SQL> ALTER INDEX tsuka.example REBUILD;
name
索引を指定する。
REBUILD
索引を再構築する。
SQL> ALTER INDEX example REBUILD;
RENAME TO new_name
インデックスの名前を変更する。
SQL> ALTER INDEX example RENAME TO example2;
UNUSABLE
インデックスを使用禁止にする。
SQL> ALTER INDEX example UNUSABLE;

ALTER INDEXに必要な権限

自分のスキーマ内にあるインデックスを再構築するには、とくに権限は必要ない。

他のスキーマ内にあるインデックスを再構築するには、ALTER ANY INDEXシステム権限が必要である。

MySQL

MySQLにALTER INDEX文は存在しない。

Postgres

PostgreSQLでインデックスの名前を変更する。

ALTER INDEX name RENAME TO new_name

SQL Server

ALTER INDEX { index_name | ALL } ON object REBUILD
  [ PARTITION = ALL ]
  [ WITH ( rebuild_index_option) [ ,...n ] ]
ALTER INDEX { index_name | ALL } ON object REBUILD
  [ PARTITION = partition_number ]
  [ WITH ( single_partition_rebuild_index_option ) [ ,...n ] ]
ALTER INDEX { index_name | ALL } ON object DISABLE
ALTER INDEX { index_name | ALL } ON object REORGANIZE
  [ PARTITION = partition_number ]
  [ WITH ( reorganize_option ) ]
ALTER INDEX { index_name | ALL } ON object SET (set_index_option[ ,...n ])
ALTER INDEX { index_name | ALL } ON object RESUME [ WITH ( resumable_index_options, [...n] ) ]
ALTER INDEX { index_name | ALL } ON object PAUSE
ALTER INDEX { index_name | ALL } ON object ABORT

関連SQL

CREATE INDEX
索引を作成する。
DROP INDEX
索引を削除する。

参考文献

Microsoft 2023. ALTER INDEX (Transact-SQL) - SQL Server