Mam pytanie odnośnie ALTER TABLE
polecenia na naprawdę dużym stole (prawie 30 milionów wierszy). Jedna z jego kolumn to a varchar(255)
i chciałbym zmienić jej rozmiar na a varchar(40)
. Zasadniczo chciałbym zmienić moją kolumnę, uruchamiając następujące polecenie:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
Nie mam problemu, jeśli proces jest bardzo długi, ale wydaje się, że moja tabela nie jest bardziej czytelna podczas polecenia ALTER TABLE. Czy jest mądrzejszy sposób? Może dodać nową kolumnę, skopiować wartości ze starej kolumny, usunąć starą kolumnę i na koniec zmienić nazwę nowej?
Każda wskazówka będzie bardzo mile widziana! Z góry dziękuję,
Uwaga: używam PostgreSQL 9.0.
varchar(255)
PostgreSQL nie przydzieli 255 bajtów wartości, której rzeczywista długość wynosi 40 bajtów. Przydzieli 40 bajtów (plus trochę narzutu wewnętrznego). Jedyną rzeczą, która zmieni be changed by the
opcję ALTER TABLE, jest maksymalna liczba bajtów, które możesz przechowywać w tej kolumnie bez otrzymywania błędu od PG.
resizing
nie sprawi, że stół będzie zajmował mniej miejsca?