varchar2(N)中这个N的大的话,会不会多占用空间

Angly1018 2009-03-28 11:35:47
例如表t_table(table_name varchar2(10),table_note varchar2(2000));
执行下面语句:
insert into t_table('t01','t01);
commit;
这样的话两个字段的占用的空间是不是一样大
请达人帮忙分析一下
...全文
656 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuyou001 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hebo2005 的回复:]
有差别的,实际占的空间是自动分配
但在读取时会影响效率,尤其是大数据量的时候
[/Quote]
好像varchar2的读取效率要差些
hebo2005 2009-03-30
  • 打赏
  • 举报
回复
有差别的,实际占的空间是自动分配
但在读取时会影响效率,尤其是大数据量的时候
bw555 2009-03-30
  • 打赏
  • 举报
回复
读取时会影响效率,也就是查询速度会比较慢,存储空间应该是一样的
[Quote=引用 12 楼 Angly1018 的回复:]
可惜公司不能上CSDN
我不是问CHAR和VARCHAR2的区别
我是想问VARCHAR2(10),VARCHAR2(4000)
如果我存的数据不超过10的话,我定义它为VARCHAR2(4000)
会不会有影响
[/Quote]
Angly1018 2009-03-30
  • 打赏
  • 举报
回复
可惜公司不能上CSDN
我不是问CHAR和VARCHAR2的区别
我是想问VARCHAR2(10),VARCHAR2(4000)
如果我存的数据不超过10的话,我定义它为VARCHAR2(4000)
会不会有影响
「已注销」 2009-03-30
  • 打赏
  • 举报
回复
mark
cheng_fengming 2009-03-30
  • 打赏
  • 举报
回复
varchar2是变长字符,不同于char (定长类型)
也就是说varchar2(10)代表你输入的字符最长为10 当你输入"abc"时,长度为3
但是你定义了char(10),输入"abc"时就是10了
dawugui 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 Angly1018 的帖子:]
例如表t_table(table_name varchar2(10),table_note varchar2(2000));
执行下面语句:
insert into t_table('t01','t01);
commit;
这样的话两个字段的占用的空间是不是一样大
请达人帮忙分析一下
[/Quote]

基本一样.但不能完全说是一样.
jdsnhan 2009-03-29
  • 打赏
  • 举报
回复
char 是定长,varchar2是非定长的
changeking 2009-03-29
  • 打赏
  • 举报
回复
1楼是对的
Angly1018 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oraclelogan 的回复:]
引用楼主 Angly1018 的帖子:
例如表t_table(table_name varchar2(10),table_note varchar2(2000));
执行下面语句:
insert into t_table('t01','t01);
commit;
这样的话两个字段的占用的空间是不是一样大
请达人帮忙分析一下


不会的,因为varchar2是自动存储的,数据占多少空间,就分配多少空间,不是一下子占满2000个字节空间的。
[/Quote]

今天有点事出去,很感谢大家
我知道VARCHAR2是自动存储的,
就像我的例子,此时两个字段在TABLESPACE占的空间是不是一样大呢?
如果像你所说的是根据数据自动分配空间,那在定义VARCHAR2类型的时候
都定义成VARCHAR2(4000),这样不更好吗
tianqiao1689 2009-03-29
  • 打赏
  • 举报
回复
上面的都很模糊
fcoolx 2009-03-29
  • 打赏
  • 举报
回复
不会啊
oraclelogan 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 Angly1018 的帖子:]
例如表t_table(table_name varchar2(10),table_note varchar2(2000));
执行下面语句:
insert into t_table('t01','t01);
commit;
这样的话两个字段的占用的空间是不是一样大
请达人帮忙分析一下
[/Quote]

不会的,因为varchar2是自动存储的,数据占多少空间,就分配多少空间,不是一下子占满2000个字节空间的。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧