在嵌套的 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);