我想知道什么会有更好的并发级别,VARRAY 或嵌套表。VARRAY 真的只需要一个输入/输出操作来加载集合吗?
这是一个预订系统。
问候,
我想知道什么会有更好的并发级别,VARRAY 或嵌套表。VARRAY 真的只需要一个输入/输出操作来加载集合吗?
这是一个预订系统。
问候,
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
具有有限数量的元素并且总是密集的。