Database VAR类型限制大的缺点

Database VAR类型限制大的缺点,database,oracle,database-design,varchar,varray,Database,Oracle,Database Design,Varchar,Varray,将VARCHAR或VARRAY的最大整数大小设置为远大于实际需要的值(或将其设置为允许的最大大小)是否有任何缺点(允许值或数组增长过大除外)?不要使用VARRAY,使用嵌套表。嵌套表可以容纳任意数量的元素 在表定义中使用varchar2(4000)而不是varchar2(20)并没有什么坏处,因为Oracle在不需要的时候不会占用这个空间 如果您谈论的是数据库表中的一列,建议将VARCHAR2的最大长度设置为需求允许的最小长度-与任何其他约束一样,使用数据库的这些内置功能有助于确保只保存有效数据

将VARCHAR或VARRAY的最大整数大小设置为远大于实际需要的值(或将其设置为允许的最大大小)是否有任何缺点(允许值或数组增长过大除外)?

不要使用VARRAY,使用嵌套表。嵌套表可以容纳任意数量的元素


在表定义中使用varchar2(4000)而不是varchar2(20)并没有什么坏处,因为Oracle在不需要的时候不会占用这个空间

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

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

DECLARE v VARCHAR2(2000); BEGIN...
将在用户的内存区域中分配2000字节,而:

DECLARE v VARCHAR2(2001); BEGIN...
将仅在分配值时分配内存,并且只分配保存分配给它的值所需的内存


我正在考虑使用二进制浮点数的VARRAY来存储包含数万个数据点的原始波形。如果我们决定购买能够更快读取数据的新DAQ设备,这个数字很可能会超过十万。我只是期待着提前计划。我只是不知道使用最大值为μ的VARRAY是否会失去效率ch比我现在需要的要大。请阅读此处:上述参考中的注释:“当嵌套表存储在数据库中并从数据库中检索时,不能依赖嵌套表的顺序和下标保持稳定,因为数据库中不保留顺序和下标。”如果你不介意的话,那就去做吧。VARRAY也不存储未使用的数组条目,因此一个元素的VARRAY(100000)不会比一个元素的VARRAY(10)花费更多的存储空间。因为第二段。