0

将 VARCHAR 或 VARRAY 的最大整数大小设置为明显大于实际需要的值(或将其设置为允许的最大大小)是否有任何缺点(除了允许值或数组变得太大)?

4

2 回答 2

2

如果您正在谈论数据库表中的列,建议将 VARCHAR2 的最大长度设置为要求允许的最小长度 - 与任何其他约束一样,它有助于使用数据库的这些内置功能来确保仅保存有效数据(例如,如果输入了 1000 个字符的姓氏,我很确定那将是错误的,并且可能会在某处突出显示程序中的错误)。

在 PL/SQL 方面,您可能会感兴趣的是,根据您在 PL/SQL 程序中声明字符串的大小,可能存在内存 (PGA) 使用差异。在内部,有一个 2000 字节的阈值,PL/SQL 引擎在此切换两种不同的内存分配方案。例如以下声明:

DECLARE v VARCHAR2(2000); BEGIN...

将在用户的内存区域中分配 2000 字节,而:

DECLARE v VARCHAR2(2001); BEGIN...

只会在分配值时分配内存,并且只会分配保存分配给它的值所需的内存。

Oracle 论坛:《VARCHAR2 空间分配》

于 2009-07-02T12:53:55.160 回答
0

只是不要使用 varray,使用嵌套表。嵌套表可以包含任意数量的元素。

在表定义中使用 varchar2(4000) 而不是 varchar2(20) 并没有真正的伤害,因为 Oracle 在不需要时不会声明该空间。

于 2009-07-01T18:31:29.007 回答