誤ってインデックスを作成していたため、そのインデックスを削除しようとしています。テーブルが大きいため、インデックスの削除には時間がかかります。インデックスをすばやく削除する他の方法はありますか?
DROP INDEX [ CONCURRENTLY ] name
をお試しください
同時に
インデックスのテーブルでの同時選択、挿入、更新、削除をロックアウトせずにインデックスを削除します。通常のDROP INDEXはテーブルの排他ロックを取得し、インデックスの削除が完了するまで他のアクセスをブロックします。このオプションを使用すると、コマンドは代わりに、競合するトランザクションが完了するまで待機します。
Postgres 9.2のドキュメントは次のとおりです。 http://www.postgresql.org/docs/9.2/static/sql-dropindex.html
注:この機能はpostgres 9.2以前では使用できません。
Postgres 9.1のドキュメントは次のとおりです。 http://www.postgresql.org/docs/9.1/static/sql-dropindex.html
これはSQL ServerのONLINE = ON
オプションに似ています: http://technet.Microsoft.com/en-us/library/ms176118.aspx
どういうわけか、maintainance_work_memはメンテナンス操作とは見なされず、インデックスの削除プロセスを高速化するための影響はありません。
インデックスを同時に削除することが唯一のオプションのようですが、PgadminまたはPsqlターミナルから直接実行することはお勧めしません。それは、セッションが終了した場合やタイムアウトが原因で発生した場合、インデックスの一貫性が失われる可能性があるためです。
お役に立てれば。 Aj