是否存在任何缺陷(除了允许值或数组变得过大)以将VARCHAR或VARRAY的最大整数大小设置为远大于实际需要的值(或将其设置为允许的最大大小)?< / p>
答案 0 :(得分:2)
如果您正在讨论数据库表中的列,建议将VARCHAR2的最大长度设置为需求允许的最小长度 - 与任何其他约束一样,它有助于使用这些内置功能数据库,以确保只保存有效数据(例如,如果输入了一个包含1000个字符的姓氏,我很确定这将是错误的,并且可能突出显示某个程序中的某个错误。)
在PL / SQL方面,您可能会感兴趣的是,根据您在PL / SQL程序中声明字符串的大小,可能存在内存(PGA)使用差异。在内部,存在2000字节的阈值,其中PL / SQL引擎在两种不同的存储器分配方案之间切换。例如以下声明:
DECLARE v VARCHAR2(2000); BEGIN...
将在用户的内存区域中分配2000个字节,而:
DECLARE v VARCHAR2(2001); BEGIN...
只会在分配值时分配内存,并且只会分配保存分配给它的值所需的内存。
答案 1 :(得分:0)
只是不要使用varray,使用嵌套表。嵌套表可以包含任意数量的元素。
在表定义中使用varchar2(4000)而不是varchar2(20)并不会真正受到影响,因为Oracle在不需要时不会声明此空间。