zmena typu polozky

Karel Zak zakkr na zf.jcu.cz
Středa Červen 30 12:57:19 CEST 2004


On Wed, Jun 30, 2004 at 11:24:53AM +0200, Martin Špirk wrote:
> Dne st 30. června 2004 09:40 Ildiko Takacsova napsal(a):
> > Chcem zmenit polozku psc z varchar(5) na varchar(6)
> >
> > begin;
> > ALTER TABLE tabulka ADD COLUMN psc2 varchar(6);
> > UPDATE tabulka SET psc2=CAST(psc AS varchar(6));
> > ALTER TABLE tabulka DROM COLUMN psc;
> > ALTER TABLE tabulka RENAME COLUMN psc2 TO psc;
> > commit;
> >
> > Kde mam chybu?
> 
> 4. radek preklep "DROM" 
> 
> Jinak ten CAST je imho zbytecny.
> A jeste, pokud se do tabulky nezapisuje prilis mnoho adres bez psc, tak bych 
> psc definoval spise jako char(6) misto varchar(6).

 Tadle uvaha  u PostgreSQL  neni moc platna. PostgreSQL  interne pouziva
 pro vsechny textove veci stejny datovy  typ (text) a fixni delky nemaji
 vliv  na zpusob  (rychlost)  ukladani. Fixnim je  v pripade  PostgreSQL
 velikost bloku  do ktereho se data  ukladaji a ktery muze  byt spolecny
 vetsimu poctu  polozek nebo  radek. Takze char(n)  je vice  libustka ze
 strany  standardu  se  kterou  jsou  vice  spojeny  problemy  pri  jeho
 pouzivani nez nejake opravdove vyhody. Jinak napr. v manulu najdete:

 Tip:  There are  no performance differences between  these three types,
 apart  from the  increased  storage size  when  using the  blank-padded
 type. While  character(n)  has  performance advantages  in  some  other
 database  systems, it  has no  such advantages  in PostgreSQL. In  most
 situations text or character varying should be used instead.

    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/


Další informace o konferenci Test