1.char的長度是固定的,而varchar2的長度是可以變化的, 比如,存儲字符串“abc”,對于char (20),表示你存儲的字符將占20個字節(jié)(包括17個空字符),而同樣的varchar2 (20)則只占用3個字節(jié)的長度,20只是最大值,當(dāng)你存儲的字符小于20時,按實際長度存儲。?
2.char的效率比varchar2的效率稍高。?
3.目前varchar是varchar2的同義詞。工業(yè)標(biāo)準(zhǔn)的varchar類型可以存儲空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權(quán)利。oracle自己開發(fā)了一個數(shù)據(jù)類型varchar2,這個類型不是一個標(biāo)準(zhǔn)的varchar,它將在數(shù)據(jù)庫中varchar列可以存儲空字符串的特性改為存儲null值。如果你想有向后兼容的能力,oracle建議使用varchar2而不是varchar。?
何時該用char,何時該用varchar2??
char與varchar2是一對矛盾的統(tǒng)一體,兩者是互補的關(guān)系.?
varchar2比char節(jié)省空間,在效率上比char會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在數(shù)據(jù)庫設(shè)計上常說的‘以空間換效率’。?
varchar2雖然比char節(jié)省空間,但是如果一個varchar2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長度不同,這會引起‘行遷移’(row migration)現(xiàn)象,而這造成多余的i/o,是數(shù)據(jù)庫設(shè)計和調(diào)整中要盡力避免的,在這種情況下用char代替varchar2會更好一些。(王朝網(wǎng)絡(luò) wangchao.net.cn)
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧