zoukankan      html  css  js  c++  java
  • 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的内存。

  • 相关阅读:
    【SaltStack官方版】—— states教程, part 4
    【SaltStack官方版】—— states教程, part 3
    【SaltStack官方版】—— states教程, part 2
    斐波那契递归和非递归算法
    实现两个大数相乘
    快速排序算法
    HadoopMR-Spark-HBase-Hive
    windows10 conda python多版本切换
    websocket通信 实现java模拟一个client与webclient通信
    maven jsp out.print()request.getParameter() 爆红
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/7277993.html
Copyright © 2011-2022 走看看