在嵌套的 table 列上创建索引
Creating index on nested table column
CREATE TYPE nums_list AS TABLE OF NUMBER;
CREATE TABLE mytest (
id NUMBER,
num NUMBER,
tagged nums_list
)
NESTED TABLE tagged STORE AS mytest_tagged_table;
现在我需要在 tagged
嵌套的 table 列上创建索引。
所以根据documentation ,语法是这样的:
CREATE INDEX index_name
ON nested_storage_table(NESTED_TABLE_ID, document_typ);
我不明白第二个参数 document_typ
是什么意思?并没有找到任何解释。
感谢任何帮助。
这是 Oracle 文档不同步的一个有趣示例。索引示例应包括类型的定义。然而,我们可以在 the PL/SQL reference. So PRINT_MEDIA.AD_TEXTDOCS_NTAB 中找到这些示例,其类型为 TEXTDOC_TAB,它具有以下签名:
CREATE TYPE textdoc_typ AS OBJECT
( document_typ VARCHAR2(32)
, formatted_doc BLOB
) ;
CREATE TYPE textdoc_tab AS TABLE OF textdoc_typ;
因此,document_typ
是某种形式的用户定义类型的元数据列。由于您定义集合类型的方式,在您的案例中没有该列的等效项:它没有要索引的命名列。
如果不理解为什么使用嵌套 table 以及为什么认为它需要索引,就很难给出明确的解决方案。但是,这可能适合您:
CREATE OR REPLACE TYPE num_t AS OBJECT (numcol NUMBER);
CREATE OR REPLACE TYPE nums_list AS TABLE OF num_t;
因此您可以在 table 的嵌套存储上构建索引:
CREATE INDEX index_name
ON nested_storage_table(NESTED_TABLE_ID, numcol);
CREATE TYPE nums_list AS TABLE OF NUMBER;
CREATE TABLE mytest (
id NUMBER,
num NUMBER,
tagged nums_list
)
NESTED TABLE tagged STORE AS mytest_tagged_table;
现在我需要在 tagged
嵌套的 table 列上创建索引。
所以根据documentation ,语法是这样的:
CREATE INDEX index_name
ON nested_storage_table(NESTED_TABLE_ID, document_typ);
我不明白第二个参数 document_typ
是什么意思?并没有找到任何解释。
感谢任何帮助。
这是 Oracle 文档不同步的一个有趣示例。索引示例应包括类型的定义。然而,我们可以在 the PL/SQL reference. So PRINT_MEDIA.AD_TEXTDOCS_NTAB 中找到这些示例,其类型为 TEXTDOC_TAB,它具有以下签名:
CREATE TYPE textdoc_typ AS OBJECT
( document_typ VARCHAR2(32)
, formatted_doc BLOB
) ;
CREATE TYPE textdoc_tab AS TABLE OF textdoc_typ;
因此,document_typ
是某种形式的用户定义类型的元数据列。由于您定义集合类型的方式,在您的案例中没有该列的等效项:它没有要索引的命名列。
如果不理解为什么使用嵌套 table 以及为什么认为它需要索引,就很难给出明确的解决方案。但是,这可能适合您:
CREATE OR REPLACE TYPE num_t AS OBJECT (numcol NUMBER);
CREATE OR REPLACE TYPE nums_list AS TABLE OF num_t;
因此您可以在 table 的嵌套存储上构建索引:
CREATE INDEX index_name
ON nested_storage_table(NESTED_TABLE_ID, numcol);