Gerçekten büyük bir tabloda (yaklaşık 30 milyon satır) ALTER TABLE
komutu hakkında bir sorum var. Onun sütunlarından biri varchar(255)
ve ben bir varchar(40)
için yeniden boyutlandırmak istiyorum. Temelde, aşağıdaki komutu çalıştırarak köşemi değiştirmek istiyorum: süreç çok uzun ama benim masa ALTER tablo komutu sırasında artık okunabilir görünüyorsaPostgresql - bir varchar sütununun boyutunu değiştir
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
sorunum yok. Daha akıllı bir yol var mı? Belki yeni bir sütun ekleyin, eski sütundan değerleri kopyalayın, eski sütunu bırakın ve nihayet yeni olanı yeniden adlandırın.
Herhangi bir ipucu büyük takdir edilecektir! Teşekkürler,
Not: PostgreSQL 9.0 kullanıyorum.
Sadece açık olmak gerekirse: Biliyorsunuz, 'yeniden boyutlandırma' tablonun daha az yer kaplamasına neden olmayacak mı? –
Benim durumumda bile mi? Sütun en fazla 40 karakterlik (octet) 255 yerine mi olacak? – Labynocle
PostgreSQL için varchar (255) 'derseniz, gerçek uzunluk 40 bayt olan bir değer için 255 bayt ayırır. 40 bayt (artı bazı iç ek yükler) tahsis edecektir. "ALTER TABLE" ile değiştirilecek tek şey, PG'den hata almadan o sütunda depolayabileceğiniz maksimum bayt sayısıdır. –