【发布时间】:2009-07-01 18:06:50
【问题描述】:
将 VARCHAR 或 VARRAY 的最大整数大小设置为明显大于实际需要的值(或将其设置为允许的最大大小)是否有任何缺点(除了允许值或数组变得太大)?
【问题讨论】:
标签: database oracle database-design varchar varray
将 VARCHAR 或 VARRAY 的最大整数大小设置为明显大于实际需要的值(或将其设置为允许的最大大小)是否有任何缺点(除了允许值或数组变得太大)?
【问题讨论】:
标签: database oracle database-design varchar varray
如果您谈论的是数据库表中的列,建议将 VARCHAR2 的最大长度设置为要求允许的最小长度 - 与任何其他约束一样,它有助于使用数据库以确保仅保存有效数据(例如,如果输入了 1000 个字符的姓氏,我很确定这将是错误的,并且可能会在某处突出显示程序中的错误)。
在 PL/SQL 方面,您可能有兴趣知道,根据您在 PL/SQL 程序中声明字符串的大小,可能存在内存 (PGA) 使用差异。在内部,有一个 2000 字节的阈值,PL/SQL 引擎在此切换两种不同的内存分配方案。例如以下声明:
DECLARE v VARCHAR2(2000); BEGIN...
将在用户的内存区域分配 2000 字节,而:
DECLARE v VARCHAR2(2001); BEGIN...
将仅在分配值时分配内存,并且仅分配保存分配给它的值所需的内存。
【讨论】:
只是不要使用可变数组,使用嵌套表。嵌套表可以包含任意数量的元素。
在表定义中使用 varchar2(4000) 而不是 varchar2(20) 并没有真正的坏处,因为 Oracle 在不需要时不会声明该空间。
【讨论】: