首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套表与VARRAY的区别

嵌套表与VARRAY的区别
EN

Stack Overflow用户
提问于 2015-04-22 04:48:09
回答 3查看 13.4K关注 0票数 5

我知道两者的基本区别和用途。但是,我正在寻找的答案是,为什么VARRAY引入了?

因为,我们可以使用嵌套表做同样的事情--使用VARRAY可以做什么,而反之亦然--在某些情况下是不可能的。此外,我注意到一些地方有人提到VARRAY商店元素内联.这是什么意思?有人能解释这两者的内部存储和处理吗?

EN

回答 3

Stack Overflow用户

发布于 2015-04-22 05:59:23

总之,在以下情况下可以使用变量大小数组 a.k.a 瓦雷

  • 在填充元素之前就知道了元素的数量。
  • 元素需要按顺序访问。
  • 保证元素顺序

例如,VARRAY声明为:

代码语言:javascript
复制
TYPE varray_emp IS VARRAY(14) OF emp%ROWTYPE;
emp_rec varray_emp;

因此,您可以看到上界是固定的,在上面的示例中是14。

有关更多细节,请参见文档

关于数据库中存储VARRAY的更新

引用上述文档链接:

每个varray存储为单个对象,或者存储在表中(如果varray小于4KB),或者存储在表外(如果varray大于4KB),但仍存储在相同的表空间中。您必须同时更新或检索varray的所有元素,这在同时对所有元素执行某些操作时是最合适的。但是,您可能会发现以这种方式存储和检索大量元素是不切实际的。

关于行存储中的

varray通常以一行方式存储,即与其行中的其他数据存储在相同的表空间中。如果它足够大,Oracle会将其存储为BLOB。

阅读更多关于Varrays的存储注意事项的信息

票数 2
EN

Stack Overflow用户

发布于 2018-04-07 15:10:29

有两个主要的重要区别:

  1. 在VARRAY声明中需要最大的元素数(极限)。在嵌套表类型集合中不可能有限制。
  2. 内嵌存储在VARRAY中是可能的(嵌套表总是超出行) 如果集合类型用作数据库中的普通表列类型: 离线嵌套表数据存储在与主表行不同的数据库段中。对于嵌套表段,类型是嵌套表。 内联嵌套行存储在主表行中。 对于VARRAY,使用CLOB。数据库将在表列中存储小于+-4000字节的LOB。tables.htm#i1010742
票数 2
EN

Stack Overflow用户

发布于 2015-04-22 05:39:29

差异b/w嵌套表和varray:

将为嵌套表创建单独的表空间,该表不是父表的表空间。如果varray大小小于4KB,则将其存储在表(否则为列)内,则存储在表外但存储在相同的表空间中。 可以对嵌套表的单个元素执行更新、删除。 不可能对Varray中的单个元素执行更新和删除。要获得更多的澄清,请通过下面的链接。colls.htm

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29787961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档