web-dev-qa-db-ja.com

postgresqlのインデックスを削除する

誤ってインデックスを作成していたため、そのインデックスを削除しようとしています。テーブルが大きいため、インデックスの削除には時間がかかります。インデックスをすばやく削除する他の方法はありますか?

8
user2659199

DROP INDEX [ CONCURRENTLY ] nameをお試しください

  • 同時に

    インデックスのテーブルでの同時選択、挿入、更新、削除をロックアウトせずにインデックスを削除します。通常のDROP INDEXはテーブルの排他ロックを取得し、インデックスの削除が完了するまで他のアクセスをブロックします。このオプションを使用すると、コマンドは代わりに、競合するトランザクションが完了するまで待機します。

  • Postgres 9.2のドキュメントは次のとおりです。 http://www.postgresql.org/docs/9.2/static/sql-dropindex.html

注:この機能はpostgres 9.2以前では使用できません。

7
Mingyu

どういうわけか、maintainance_work_memはメンテナンス操作とは見なされず、インデックスの削除プロセスを高速化するための影響はありません。

インデックスを同時に削除することが唯一のオプションのようですが、PgadminまたはPsqlターミナルから直接実行することはお勧めしません。それは、セッションが終了した場合やタイムアウトが原因で発生した場合、インデックスの一貫性が失われる可能性があるためです。

お役に立てれば。 Aj

http://www.postgresql-blog.com/

0
Ajay Patel