.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "REINDEX" "" "2003-08-02" "SQL - 言語" "SQL コマンド"
.SH NAME
REINDEX \- 破損したインデックスの再構築
.SH SYNOPSIS
.sp
.nf
REINDEX { TABLE | DATABASE | INDEX } \fIname\fR [ FORCE ]
  
.sp
.fi
.SS "入力"
.PP
.TP
\fBTABLE\fR
指定したテーブルの全インデックスを再作成します。
.TP
\fBDATABASE\fR
指定したデータベースの全てのシステムインデックスを再作成します。(ユーザテーブルのインデックスは含まれません。)
.TP
\fBINDEX\fR
指定したインデックスを再作成します。
.TP
\fB\fIname\fB\fR
インデックスの再作成を行なうテーブル/データベース/インデックスの名前を指定します。 テーブルおよびインデックス名はスキーマで修飾することができます。
.TP
\fBFORCE\fR
強制的にシステムインデックスの再構築を行ないます。このキーワードがなければ、\fBREINDEX\fR は無効とされていないシステムインデックスを処理しません。FORCE を \fBREINDEX INDEX\fR や ユーザインデックスに対する再作成に付与することは意味がありません。
.PP
.SS "出力"
.PP
.TP
\fBREINDEX\fR
テーブルのインデックス再作成が正常に終了した場合に返されるメッセージです。
.PP
.SH "説明"
.PP
\fBREINDEX\fR は、破損したシステムインデックスの修復に使われます。理論的にはこれは必要なものではありませんが、実際のところインデックスはソフトウェアのバグやハードウェア障害により破損することがあります。\fBREINDEX\fR はこの修復手段を提供します。
.PP
また \fBREINDEX\fR は、他の方法では回収できない使用不可能なインデックスを取り除きます。 詳細については、このマニュアルの「定常的なインデックスの再作成」 に関する節を参照してください。
.PP
ユーザテーブルのインデックスが破損したかもしれない場合、\fBREINDEX INDEX\fR もしくは\fBREINDEX TABLE\fR を使用して、そのインデックスやそのテーブル上の全てのインデックスを簡単に再作成することができます。
.sp
.RS
.B "Note:"
ユーザテーブルの破損したインデックスを扱うもう一つの方法は、ただそのインデックスを破棄し、再作成することです。他のテーブルに対する操作と同じような操作で管理できますので、実際はこの方法の方が好まれるかもしれません。\fBREINDEX\fR はテーブルの排他的ロックを獲得しますが、\fBCREATE INDEX\fR はテーブルへの書き込みのみをロックし、読み込みはロックしません。
.RE
.sp
.PP
システムテーブルのインデックスの破損を復旧する必要がある場合はより複雑になります。この場合、疑わしいインデックス自体を使用しないようにバックエンドに復旧処理を実行させることが重要です。 (実際は、このような場合は、破損したインデックスへの依存によりバックエンドはその起動時に強制終了してしまうことになるでしょう。)安全に復旧させるには、postmaster を停止させ、-Oおよび-Pコマンドラインオプション(これらはそれぞれシステムテーブルの変更を許可し、システムインデックスの使用を抑制するオプションです。)を使用してスタンドアロン状態のPostgreSQL バックエンドを起動させなければなりません。そして、どこまで再構成させたいのかによって、\fBREINDEX INDEX\fR、\fBREINDEX TABLE\fR、または、\fBREINDEX DATABASE\fR コマンドを発行します。不明な場合は、\fBREINDEX DATABASE FORCE\fR を使用して、強制的にそのデータベースの全てのシステムインデックスを再構成して下さい。そして、スタンドアロン状態のバックエンドを停止させ、postmaster を再起動して下さい。
.PP
ほとんどのユーザにとって、スタンドアロン状態のバックエンドを使用する機会は上の場合のみですので、使用上の注意事項を以下に示します。
.TP 0.2i
\(bu
以下のようなコマンドでバックエンドを起動します。
.sp
.nf
\fBpostgres -D $PGDATA -O -P my_database\fR
.sp
.fi
データベース領域の正確なパスを \fB-D\fR に指定、もしくは、環境変数\fBPGDATA\fR が設定されているか確認して下さい。また、作業対象とするデータベースの名前を指定して下さい。
.TP 0.2i
\(bu
\fBREINDEX\fR だけではなく、任意のSQLコマンドを発行することができます。
.TP 0.2i
\(bu
スタンドアロン状態のバックエンドでは、改行をコマンド入力の終りとして扱うことに注意して下さい。 \fBpsql\fR におけるセミコロンのような高度な機能はありません。コマンドが複数行に渡る場合は、最終行を除き、改行を入力する前にバックスラッシュを入力しなければなりません。 また、コマンドライン編集に便利な機能は提供されていません (例えば、コマンド履歴機能はありません)。
.TP 0.2i
\(bu
バックエンドを終了するには、EOF (通常は \fBControl\fR+\fBD\fR) を入力します。
.PP
より詳細については \fBpostgres\fR(1) のリファレンスページを参照して下さい。
.SH "使用方法"
.PP
mytable テーブルのインデックスを再作成します。
.sp
.nf
REINDEX TABLE mytable;
   
.sp
.fi
.PP
1つのインデックスを再構築します。
.sp
.nf
REINDEX INDEX my_index;
   
.sp
.fi
.PP
全てのシステムインデックスを再構築します。 (これは、スタンドアロン状態のバックエンドでのみ動作します。)
.sp
.nf
REINDEX DATABASE my_database FORCE;
   
.sp
.fi
.SH "互換性"
.SS "SQL92"
.PP
SQL92には\fBREINDEX\fRはありません。
