【ORACLE】VARCHAR2为什么不直接用最大长度?

问题描述

Oracle数据库定义VARCHAR2(500)与定义VARCHAR2(50),存储"Hello Oralce"占用的空间是否一样大?为什么?
自己推理:如果两者占用空间一样大,那么VARCHAR2(较小值)还有什么意义,直接定义VARCHAR2(MAX_LENGTH)不就OK了?

问题分析

oracle的varchar2在存储的时候是根据具体插入数据的大小来决定存储大小的。既然这样,我们一直用varchar2(4000)设置这种类型不就好了吗?这样省去了对于字段大小的估计问题,很省事。但为什么不能这样呢?

问题解决

个人认为比较客观和具体的结论是:如果直接都用varchar2(4000)的话,很容易导致在建立联合索引的时候产生ORA-01450错误。

参考资料[1]中的解答和示例

参考资料[2]给出的答案

参考资料:

[1] https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:3014576500346676264

[2] https://stackoverflow.com/questions/24258841/oracle-varchar2-using-the-max-length

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值