varchar2的长度的意义

转载 2012年03月24日 10:02:56

varchar2的长度的意义

http://www.cnblogs.com/vipcjob/archive/2010/06/08/1754075.html

既然varchar2是变长的,那么设置它的长度还有什么意义?干脆都用最大长度
比如说一个Currency字段,我可以把它设为varchar2(3),我也可以设为最大长度varchar2(4000),请问一下设为长度3有什么好处?
唯一可以想到的是,前一种方式限制了可以输入的值的范围,但是也留下了隐患:万一以后长度变大了怎么办?

主要以下3个好处

1。由于数据库的限制(参见Logical Database Limits),每个索引的字段的总长度不能超过75% * the database block size再减去some overhead的长度,由于有限制,所以字段的长度也限制了索引字段的大小:

SQL> create table x(
a varchar2(2000),
b varchar2(2000),
c varchar2(2000),
d varchar2(2000),
e varchar2(2000));

SQL>   create table y(
a varchar2(10),
b varchar2(10),
c varchar2(10),
d varchar2(10),
e varchar2(10));

SQL> create index y_idx on y(a,b,c,d);
索引已创建。

SQL> create index x_idx on x(a,b,c,d);
第 1 行出现错误:
ORA-01450: 超出最大的关键字长度 (6398)

2、   字段长度能够起到一定的限制作用,比如一个字段长度要求是10个字节,必须要设置为varchar2(10)。

3、   如果用到ARRAY FETCH,那么客户端fetch 数据需要的内存是根据定义的字段的长度,所以大的字段会需要大的内存。比如10个VARCHAR2(4000)字段,我要取100行,那么就需要4000*10*100的内存,大约是4M,但是如果定义为VARCHAR2(10),那么就需要10*10*100的内存。

 

varchar2设置长度与实际大小

以前有学生问过,varchar2(4k)与varchar2(1)里面存同样的数据会怎么样。 我喜欢直接用测试结果说话,现在把实验补上 CREATE TABLE vc1(c1 VARCHAR2(1)...
  • jgmydsai
  • jgmydsai
  • 2015年03月14日 15:38
  • 1499

oracle varchar2最大支持长度

网上经常有人问oracle varchar2最大支持长度为多少?其实这个叫法不太准确,varchar2分别在oracle的sql和pl/sql中都有使用,oracle 在sql参考手册和pl/sql参...
  • tswisdom
  • tswisdom
  • 2012年03月03日 11:10
  • 17928

varchar2 的最大长度

varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。注意就是函数的varchar2类型的返回值长度也是4000,而不是32767。...
  • wang_jing_2008
  • wang_jing_2008
  • 2013年01月23日 15:17
  • 199

VARCHAR 和 TEXT 长度问题

关于varchar、text字段类型的长度问题探究结果 VARCHAR :varchar在mysql中满足最大行限制,也就是 65535(16k)字节,在mysql中使用 uft-8(mysql中的...
  • Mark_Chao
  • Mark_Chao
  • 2018年01月06日 22:18
  • 44

ORACLE中VARCHAR2类型的字段长度

ORACLE中VARCHAR2类型的字段长度是按照byte来定义的。如果数据库使用的字符集是GBK,GB2312或者其他定长字符集的话,这个问题似乎可以被忽略,因为只要把数据库的字段长度/2就可以得到...
  • AngelMyMei
  • AngelMyMei
  • 2014年05月05日 13:29
  • 2458

关于 varchar2 的最大长度

varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。今天犯了一个小错误,就是函数的varchar2类型的返回值长度也是4000,而不是我以为的32767...
  • tswisdom
  • tswisdom
  • 2012年03月03日 11:07
  • 5159

实验说明varchar2和char最大长度

引言区别:1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCH...
  • cnham
  • cnham
  • 2009年12月28日 16:22
  • 2634

关于 varchar2 的最大长度

转自:互联网   varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。今天犯了一个小错误,就是函数的varchar2类型的返回值长度也是4000,...
  • mmnn606
  • mmnn606
  • 2012年08月20日 21:48
  • 915

ORACLE 中 VARCHAR2 类型的字段长度是按照 byte 来定义的 一个容易被忽略的问题

很多新手在建数据库或添加表、字段时,会这样忽略一个问题:ORACLE 中 VARCHAR2类型的字段长度是按照 byte 来定义的。如果数据库使用的字符集是 GBK,GB2312 或者其他定长字符集的...
  • qiuhan
  • qiuhan
  • 2015年01月06日 11:15
  • 2166

ORACLE VARCHAR2最大长度是4000?还是32767?

ORACLE VARCHAR2最大长度问题 url:http://www.cnblogs.com/kerrycode/p/3833746.html 2014-07-09 15:53 by 潇湘隐者, ...
  • jackpk
  • jackpk
  • 2015年11月05日 15:16
  • 3807
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:varchar2的长度的意义
举报原因:
原因补充:

(最多只允许输入30个字)