ALTER TABLE
非常に大きなテーブル(約3,000万行)に対するコマンドについて質問があります。その列の1つはです。varchar(255)
これをにサイズ変更したいと考えていvarchar(40)
ます。基本的に、次のコマンドを実行して列を変更します。
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
プロセスが非常に長くても問題はありませんが、ALTER TABLEコマンドの実行中にテーブルが読みにくくなったようです。もっと賢い方法はありますか?たぶん、新しい列を追加し、古い列から値をコピーし、古い列をドロップして、最後に新しい列の名前を変更しますか?
手がかりは大歓迎です!前もって感謝します、
注:PostgreSQL 9.0を使用しています。
varchar(255)
PostgreSQLに言うと、実際の長さが40バイトの値に255バイトは割り当てられません。40バイトを割り当てます(さらに、内部オーバーヘッドも含まれます)。唯一のことだろうbe changed by the
ALTER TABLE`あなたはPGからエラーを取得せずに、その列に格納できる最大バイト数です。
resizing
はテーブルがより少ないスペースを占有することをしないでしょうか?