• varchar2长度的意义


    参考: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的内存。

  • 相关阅读:
    GDI 设备环境句柄(2)
    GDI 像素(5)
    Api+Mvc增删查改
    sql语句全
    Mvc 导出
    触发器、事务
    计算时间戳的差
    SQL行转列经典例子(转载)
    Socket (套接字)通信
    MVC上传图片
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/7277993.html
Copyright © 2020-2023  润新知