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

http://www.itpub.net/thread-732714-2-1.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长度的意义的更多相关文章

  1. Oracle Varchar2长度 及 PHP 长度判断

    oracle数据库相信大家都比较熟悉,数据库中有一种非常常用的数据类型:字符串型.          对应该类型,在oracle中有三种比较常用的类型:varchar2(byte).varchar2( ...

  2. mysql中int长度的意义 int(0)

    问题: mysql的字段,unsigned int(3), 和unsinged int(6), 能存储的数值范围是否相同.如果不同,分别是多大?int(0) 能存多少位数字? 不同,int(3)最多显 ...

  3. Oracle中varchar2类型字段长度限制使用问题

    为纪念中华人民共和国建军90周年,特此一篇,以此纪念,我军威武!!! 一.问题背景 项目中商品发布,却没有保存成功. 二.问题定位 初步判断向数据库中保存时出现了错误,查看日志文件,由于日志文件过大就 ...

  4. char 和 varchar2 区别

    char 与 varchar2 区别 a:char长度固定而varchar2长度可变 b:char的遍历效率要比varchar2的效率稍高 c:char 浪费空间节省时间 varchar2浪费时间节省 ...

  5. Oracle SQL——varchar2() 和 char()关联查询 存在空格

    背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...

  6. oracle char和varchar2的区别

    char的长度是固定的,varchar2长度是可以变化的.比如:存储的是“abc”,对于char(20)来说,表示你存储的占20个字节(包括17个空字符):而对于varchar2(20)来说,表示你存 ...

  7. mysql的varchar和oracle的varchar2、nvarchar2

    mysql的varchar长度表示字符长度,一个汉字和一个英文字母的长度都是1 实例:下面name字段定义为varchar(10),可存10个汉字和10个字母 oracle的varchar2长度表示的 ...

  8. Oracle使用——varchar2() 和 char()关联查询 存在空格

    背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...

  9. 测度论--长度是怎样炼成的[zz]

    http://www.58pic.com/newpic/27882296.html http://www.58pic.com/newpic/27893137.html http://699pic.co ...

随机推荐

  1. PHP中new self()和new static()的区别

    1.new static()是在PHP5.3版本中引入的新特性. 2.无论是new static()还是new self(),都是new了一个新的对象. 3.这两个方法new出来的对象有什么区别呢,说 ...

  2. 3ds max学习笔记(五)--操作工具

    一些快捷:移动,旋转,缩放右键可调整数据或者直接右键点开也可以看到或者快捷键W,E,R 复制物体:摁住shift+移动工具,往想要复制的位置拖拽(实例方式复制)亦可选择多个父对象

  3. Visual Studio VS使用freopen调试控制台闪退

    解决方法 freopen("CON", "r", stdin);    system("pause>nul"); 暂停函数之前,使用f ...

  4. 在latex或者mathtype中如何输入花体,如拉式量L

    这个问题困扰我很久,知道我找到这个答案: 把  \mathcal{L} 直接黏贴到mathtype的编辑框中就可以产生花体L了

  5. PMM 对MYSQL 的监控配制

      系统选择: centos 7.2     关闭防火墙:     systemctl stop firewalld.service     systemctl disable firewalld.s ...

  6. RestTemplate之GET和POST调用和异步回调

    get方式 String url = "http://hostname:port/v1.0/data/data"; HttpHeaders headers = new HttpHe ...

  7. GoogLeNet 解读

    GoogLeNet系列解读 2016年02月25日 15:56:29 shuzfan 阅读数:75639更多 个人分类: 深度学习基础    版权声明:本文为博主原创文章,转载请注明出处 https: ...

  8. c++中transform()函数和find()函数的使用方法。

    1.transform函数的使用 transform在指定的范围内应用于给定的操作,并将结果存储在指定的另一个范围内.transform函数包含在<algorithm>头文件中. 以下是s ...

  9. 【网络安全】SSLSplit实现中间人攻击

    中间人攻击,即在中间监听获取网络数据以便获取的有价值的信息实现攻击破坏的目的,即client-mid man-server,此处介绍的sslsplit可以作为mid man监听ssl信息及HTTP信息 ...

  10. 查看SQL Server的版本及License

    select @@VERSION Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyri ...