论坛首页 综合技术论坛

oracle 讨论char varchar varchar2 数据类型选用

浏览 5302 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-21  
这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?
 
首先我们先来分析3个数据类型的说明:
   1。char
         CHAR的长度是固定的,最长2000个字符。
 
   2。varchar 和 varchar2
         可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案         最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。
         其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。
 
知道了他们的特点我们就来讨论下使用区别
    1.char和varchar、varchar2
         由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别:
    varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

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

    当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。

 

   2。varchar和varchar2

    这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。

     因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。

     所以我得出了以下结论:

     如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle之外其他数据库兼容就不要用varchar2。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics