zoukankan      html  css  js  c++  java
  • varchar2的长度的意义

    既然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的内存。

  • 相关阅读:
    C# 函数参数object sender, EventArgs e
    Winform中利用委托实现窗体之间的传值
    Web前端学习笔记——Canvas
    js 删除 按钮所在的行
    box-sizing
    前端中关于HTML标签的属性for的理解
    apply和call的用法总结
    target 确定元素是谁??
    css3过渡和动画
    处理两端极限值的小技巧
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1754075.html
Copyright © 2011-2022 走看看