【问题标题】:Creating index on subtype-specific attribute in a SQL Object table在 SQL 对象表中为特定于子类型的属性创建索引
【发布时间】:2015-01-23 22:37:01
【问题描述】:

我创建了一个对象类型为“文档”的表。此表包含多个文档子类型(例如:配方、出版物、合同)。这些子类型都包含通用属性(id、标题、文件大小),但通常包含附加属性(即库存编号)。我为常用搜索的公共属性创建了索引,但也想为常用搜索的子类型特定属性创建索引。

例如,我为 Documents 表的 Title 创建了一个索引:

CREATE INDEX i_title
ON Documents (Title);

我想做类似以下的事情:

CREATE INDEX i_stock_number
ON DOCUMENTS d (Stock_Number) WHERE VALUE(d) IS OF TYPE(Publication);

或者可能

CREATE INDEX i_stock_number
ON DOCUMENTS (TREAT(DOCUMENTS AS Publication).Stock_Number);

您能帮我确定如何为子类型特定属性创建索引吗?

感谢您的宝贵时间。

【问题讨论】:

    标签: sql oracle indexing object-type subtyping


    【解决方案1】:
    create index i_stock_number
    on documents d
    (treat(value(d) as publication).stock_number);
    

    假设这样的数据模型:

    create or replace type document is object
    (
        id number,
        title varchar2(100),
        file_size number
    ) not final;
    
    create or replace type publication under document
    (
        stock_number number
    );
    
    create table documents of document;
    
    insert into documents values(publication(1, 'title', 100, 200));
    commit;
    

    【讨论】:

    • 非常感谢!完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2016-12-31
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多