0

我想知道什么会有更好的并发级别,VARRAY 或嵌套表。VARRAY 真的只需要一个输入/输出操作来加载集合吗?

这是一个预订系统。

问候,

4

1 回答 1

0

VARRAY 真的只需要一个输入/输出操作来加载集合吗?

定义一个VARRAY和一个集合类型:

CREATE TYPE test_varray AS VARRAY(3) OF NUMBER;
CREATE TYPE test_collection AS TABLE OF NUMBER;

然后,您可以为每种数据类型创建类似的表:

CREATE TABLE test1 (
  id    NUMBER PRIMARY KEY,
  array test_varray
);

CREATE TABLE test2 (
  id    NUMBER PRIMARY KEY,
  array test_collection
) NESTED TABLE array STORE AS test2__array;

您可以INSERT将这些表作为单个语句:

INSERT INTO test1 ( id, array ) VALUES ( 1, test_varray( 1.1, 1.2, 1.3 ) );
INSERT INTO test2 ( id, array ) VALUES ( 1, test_collection( 1.1, 1.2, 1.3 ) );

您可以SELECT将这些表作为单个语句:

SELECT id, column_value FROM test1 CROSS JOIN TABLE( array );
SELECT id, column_value FROM test2 CROSS JOIN TABLE( array );

两者都输出:

身份证 | COLUMN_VALUE
-: | ------------:
 1 | 1.1
 1 | 1.2
 1 | 1.3

db<>在这里摆弄

所以从INSERT/SELECT操作的角度来看,它们在功能上是相似的。Oracle 文档 - 了解 PL/SQL 集合类型主要解释了一些差异:

  • VARRAY具有有限数量的元素并且总是密集的。
  • 集合(嵌套表)可以有无限数量的元素并且可以是稀疏的。
于 2019-10-09T11:40:43.297 回答