
お世話になります。
PostgreSQLにて、大量データ(40万件ぐらい)のテーブルに、下記処理を行ったところ、処理速度が異様に低下してしまいました。
・10行くらいのカラムを追加
・デフォルト値制約を設定
・追加したカラムにデフォルト値をアップデート
一応、VACUUM ANALYZEは、かけてはいたのですが、処理速度は向上せずに、VACUUM FULLにて対応したところ、速度は元に戻りました。
ですが、カラム追加をする毎にVACUUM FULLをかけるには、ちょっと時間がかかり過ぎで、他に良い方法が無いか悩んでおります。
何か、良い方法はありませんでしょうか?
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
PostgreSQLのバージョンは何ですか?
>・10行くらいのカラムを追加
10行とは?
10カラムを追加ですか?
データ件数は何件あるのですか?
>・追加したカラムにデフォルト値をアップデート
格納済の全行に対し、ディフォルト値でupdateしているのですか?
そんなことすれば、物理的な格納位置が乱れて検索などが遅くなって当然だと思います。格納済の行の場合、追加した列はnullで受け取ることに問題があるのでしょうか?
この回答への補足
ご回答ありがとうございます。
PostgreSQLのバージョンは8.2.1です。
>10行とは?
>10カラムを追加ですか?
はい。
10カラムを追加と言う意味です。
言葉足らずにすみません。
>格納済の全行に対し、ディフォルト値でupdateしているのですか?
>格納済の行の場合、追加した列はnullで受け取ることに問題があるのでしょうか?
はい。
やはり、nullが入ってきた場合の処理を入れなくてはならないので、デフォルト値は入れておきたいです。
>物理的な格納位置が乱れて検索などが遅くなって当然だと思います。
物理的な位置というのは、VACUUM ANALYZE などでは変わらないということでしょうか。
そういった場合は、VACUUM FULLを行うしか、対応策は無いということでしょうか?
他に対応策があれば、ご教授願えませんでしょうか。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERTできるレコード数を制限...
-
列が存在しないと言われる
-
動的に生成したカラムを使ったF...
-
COPY時のtimestamp型について
-
DBから日付順に指定件数の削除...
-
■一番最初に値が入っている(Nul...
-
PostgreSQLで表結合+DELETEしたい
-
SQLで特定データがNULLなら別デ...
-
長いSQL文を実行するには?
-
powergres(postgres)にalter文...
-
CREATE INDEXはどういう時に使...
-
特定の位置が特定の範囲に含ま...
-
インデックスの削除と、インデ...
-
PostgreSQLで、元テーブルをコ...
-
SQLite:項目が存在しない場合の...
-
alter tableすると、処理が止ま...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
テーブルの存在チェックについて
-
INSERT INTO ステートメントに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
列が存在しないと言われる
-
INSERTできるレコード数を制限...
-
PostgreSQLで表結合+DELETEしたい
-
長いSQL文を実行するには?
-
DBから日付順に指定件数の削除...
-
動的に生成したカラムを使ったF...
-
0の除算
-
■一番最初に値が入っている(Nul...
-
COPY時のtimestamp型について
-
alter tableすると、処理が止ま...
-
SQLで特定データがNULLなら別デ...
-
constraint と index の違い
-
SQLite:項目が存在しない場合の...
-
Oracleの制約構文に関して
-
INSERTできない
-
powergres(postgres)にalter文...
-
DB2でUNIQUE制約を削除したい
-
SQLiteに関数追加
-
DB2 「既存カラムへのnot null...
-
複数キーワードでのあいまい検索
おすすめ情報