走路要向前看,但也不要忘了脚下的路.

char和varchar比较

上一篇 / 下一篇  2009-05-19 11:11:59 / 个人分类:数据库技术

呵呵,我是一个知识白痴,什么都不会,但是好奇心是比较大的,今天本来是要测试上周开发部认为好的模块,可是不知道是没有更新或是什么问题,我这怎么打开网页一个大白页,这也就以为着什么也干不了,这样坐一天逛逛网页啥的感觉太没有意思了,一直想学习oracle数据库,可是又不知道从何学起,自己也不好意思去打捞别人,可又想多看看,这就打开了他们开发用的数据库,(只能看不能动的哦!)可是发现有很多数据类型是varchar型,(以前也多多少少学习过一点数据库知识)想到为什么都用varchar型而不用char呢?如果varchar要比char更优化数据库,那为什么数据库怎么升级都还要保留char类型,char肯定有比varchar更有优越的地方,于是就在网上查他们之间的区别。以下是记录和整理查询的结果(记录下来以被后用。呵呵!有点扯离主题了,现在言归正转。)

charvarchar比较:

 具考证:在字符长度一定时CHAR的性能比VARCHAR好,而在长度不确定时,CHAR类型的字段在使用时性能略差。这个在sqlServer数据库下面能够体现,并且这个字段是经常使用的。

 

区别:

        1. varcharchar区别2006-04-26 15:18Varchar对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节.char对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节.

        2CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。

        3.由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉! CHAR的效率比VARCHAR2的效率稍高。

        4.目前VARCHARVARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR

 

        何时该用CHAR,何时该用varchar2

CHARVARCHAR2是一对矛盾的统一体,两者是互补的关系.

VARCHAR2CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。


TAG:

 

评分:0

我来说两句

Open Toolbar