2013-09-11 39 views
0

据我了解,关联数组存储关键值对,它的长度可变。就像我们可以将任意数量的键值对添加到关联数组中一样。oracle中的关联数组

另外我还阅读使用 while循环遍历备用关联数组和 For循环遍历密集关联数组。

关联数组如何可疏它是动态的和

+0

你在询问关于存储过程中的关联数组吗? –

+0

我在询问关于在Oracle中的集合下的关联数组,并使用以下语法来定义----------------------------- TYPE sum_multiples是PLS_INTEGER索引的PLS_INTEGER表TABLE – upog

+0

这个讲座是关于Python的,但dict数据类型的解释会告诉你很多关于关联数组如何在内部工作的方法:http://blip.tv/pycon-us-videos-2009- 2010-2011/pycon-2010-the-mighty-dictionary-55-3352147 –

回答

1

关联数组稀疏因为它们被存储在他们的密钥的散列的顺序,而不是在顺序它们插入我们正在增加值,以它。一个数组是密集的,因为元素总是添加到最后。当你预先形成像在数组上插入的操作时,你实际上是在创建一个新的数组并添加值。这使得插入“昂贵”,因为它们需要更多的CPU时间来找到插入点,并且在插入发生时存储更多的存储器以存储中间拷贝。使用关联数组插入(只要它不扩展关联数组的大小,超出散列键大小)是快速的,因为它占用可预测的少量CPU和内存。另一个与数组相比昂贵的东西是通过其关键字查找特定的值。使用关联数组可以快速查找任何元素(或立即知道没有使用该键的元素),而对于数组,您必须测试每个索引以知道元素的存在位置或存在位置。在小组中,这可能看起来不是什么大问题,但是这些问题只会在你的组合变得越来越大时变得更糟。不要以为关联数组是最好的唯一途径。他们通过使用更多的记忆来获得速度。同样遍历关联数组中的所有键(取决于数据类型实现)可能比迭代通过密集数组慢。总是最好的建议,尽量选择最好的工具。

1

关联数组是密集和稀疏的,这取决于如何为它建立索引。

如果您使用主键或pls_integer或其他可以密集打包数据的东西将其索引,则联想数组变得密集。取数据会很快。

在哪里好像你通过一些varchar2列或其他不容易获取的索引,那么特定的联合数组是稀疏的。

+0

1.如果它不容易获取,那么它是稀疏的??????? 2.是否不可能密集包装varchar2索引数组? – upog

+0

这取决于数据。 Varchar2也可以是密集的。但大多数时候它会很稀疏。它完全依赖于你存储在数组中的数据。 –