Mam pytanie odnośnie ALTER TABLEpolecenia 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.
resizingnie sprawi, że stół będzie zajmował mniej miejsca?