1哈罗社区,
我们目前正在评估存储通用数据结构的可能性。我们发现,至少从功能的角度来看,Oracle XMLType是旧的BLOB的一个很好的替代品。因为您可以查询和更新xml中的单个字段,还可以在XPath表达式上创建索引。
我们有点担心XMLType的性能。尤其是“有趣”中的精选表演。我们有一次选择多个数据结构的查询。这些都需要很快。
这样的查询如下所示
SELECT DOC_VALUE.getClobval() AS XML_VALUE FROM XML_TABLE WHERE d.ID = IN ('1','2',...);
我们的XML文档的大小是7到8 KB。我们在Oracle 11g上创建了类型为'XMLTYPE‘的XML列
您有在xml类型列上执行selects的经验吗?您对XMLTYPE有什么总体经验?这是一项健壮而快速的Oracle功能吗?或者它是不成熟的和实验性的东西。
问候你,马蒂亚斯
发布于 2013-10-20 06:56:41
XMLDB是我们从9i开始就有的一个强大而可靠的特性。
灵活模式的XMLType列是在隐藏的XMLType列上实现的,而固定模式的CLOB列则被分解为隐藏的表和视图;毕竟,XMLType与标准对象一样可靠。
性能会因您的使用而有所不同,但是在XMLType上读取整个XML比在传统的CLOB上读取要快,因为实际上它只是读取并按原样提供存储在CLOB上的XML代码。
发布于 2017-08-05 15:18:17
您可以将XDB.XMLIndex分配给XMLType,之后性能将会很好。我们有一个只有13,000条记录的表,每个记录都包含一个不太大的XML Clob,如果打印在文本上,可能每个记录都有40页,并且在没有XMLIndex的情况下运行简单的查询通常需要10分钟以上,而运行更复杂的查询通常需要2到3倍的时间!
使用XMLIndex时,性能与典型的表相当(全表扫描时的性能大约为毫秒级)。XMLIndex可以像您需要的那样复杂,我尝试了这个简单的索引类型,它工作得很好:(我之所以说它是简单的,是因为我不完全理解这个索引类型的内部工作原理!)
CREATE INDEX myschema.my_idx_name ON myschema.mytable
(SYS_MAKEXML(0,"SYS_SOMETHING$"))
INDEXTYPE IS XDB.XMLINDEX
NOPARALLEL;
您应该了解您可以使用的各种XMLIndex选项,并根据您的需要进行选择。文档:https://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb_indexing.htm#CHDJECDA
https://stackoverflow.com/questions/19457536
复制相似问题