问题描述
你好,问一下汤姆团队。
我正在创建一个数据模型,并考虑在Oracle数据库19c中创建一些XMLType列,因为我们以该格式接收数据,并且我们希望利用此Oracle功能。
我有一些问题:
1.开发人员说,如果我创建一个XMLType列来存储XML数据,当数据增加时,它将没有性能。正因为如此,他们告诉我,我应该在关系模型中放置一些XML列,以便在通过应用程序查询时获得性能,因为XML查询是 “慢” 的。我说我们可以使用XMLQuery查询XMLType列并为相关列建立索引。
例如:
如果我有XML:
他们想要:
你觉得怎么样?
2.在具有XMLType列的表中,身份列是否仍用作PK?
3.使用XMLType列还应该考虑什么?
提前感谢。
问候,
我正在创建一个数据模型,并考虑在Oracle数据库19c中创建一些XMLType列,因为我们以该格式接收数据,并且我们希望利用此Oracle功能。
我有一些问题:
1.开发人员说,如果我创建一个XMLType列来存储XML数据,当数据增加时,它将没有性能。正因为如此,他们告诉我,我应该在关系模型中放置一些XML列,以便在通过应用程序查询时获得性能,因为XML查询是 “慢” 的。我说我们可以使用XMLQuery查询XMLType列并为相关列建立索引。
例如:
如果我有XML:
1.0 value value value value 复制
他们想要:
create table A column1 varchar(x), column2 varchar(x), XML XMLType复制
你觉得怎么样?
2.在具有XMLType列的表中,身份列是否仍用作PK?
3.使用XMLType列还应该考虑什么?
提前感谢。
问候,
专家解答
你需要考虑一下你在这里做出的权衡。
采用XML并将其直接插入XMLType列会使插入代码变得容易得多。但是它使查询变得复杂。虽然您可以使用XMLQuery,但这可能很难使用,特别是如果您的开发团队不熟悉它。
请记住,通常您在表上只有少数插入语句,但可以轻松地进行数百甚至数千个不同的查询!
这种权衡值得吗?
然后,您必须记住,如果XML的内容发生变化,该怎么办。如果你直接在XMLType中转储它,那么添加/删除元素就没什么可做的了。但是,当将其分解为关系结构时,您必须适当地更新表和代码。
如果XML定期更改,则可能会产生大量工作。
这种权衡值得吗?
您是正确的,您可以使用 (结构化或非结构化) XMLIndex、Oracle文本索引或基于目标函数的索引 (尽管这些索引已弃用) 来索引XML。
文档详细讨论了它们之间的差异。
https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/indexes-for-XMLType-data.html#GUID-AEF30229-B377-4479-9627-45494B772392
这些会提供足够好的性能吗?它与常规表索引相比如何?你必须测试才能找到答案!
Are identity columns still useful as PK in tables with XMLType columns?
可能吗?同样,这取决于您为什么要添加这些。
如果你想让外键指向这个表,那么你很可能想要添加这些 (假设没有其他明显的PK候选)。
它还使查找特定行变得更加容易,这可以使一些搜索和调试变得更加容易。
如果您想了解更多有关使用XML的信息,XDB开发人员指南将详细讨论使用XML的来龙去脉。https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/index.html
采用XML并将其直接插入XMLType列会使插入代码变得容易得多。但是它使查询变得复杂。虽然您可以使用XMLQuery,但这可能很难使用,特别是如果您的开发团队不熟悉它。
请记住,通常您在表上只有少数插入语句,但可以轻松地进行数百甚至数千个不同的查询!
这种权衡值得吗?
然后,您必须记住,如果XML的内容发生变化,该怎么办。如果你直接在XMLType中转储它,那么添加/删除元素就没什么可做的了。但是,当将其分解为关系结构时,您必须适当地更新表和代码。
如果XML定期更改,则可能会产生大量工作。
这种权衡值得吗?
您是正确的,您可以使用 (结构化或非结构化) XMLIndex、Oracle文本索引或基于目标函数的索引 (尽管这些索引已弃用) 来索引XML。
文档详细讨论了它们之间的差异。
https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/indexes-for-XMLType-data.html#GUID-AEF30229-B377-4479-9627-45494B772392
这些会提供足够好的性能吗?它与常规表索引相比如何?你必须测试才能找到答案!
Are identity columns still useful as PK in tables with XMLType columns?
可能吗?同样,这取决于您为什么要添加这些。
如果你想让外键指向这个表,那么你很可能想要添加这些 (假设没有其他明显的PK候选)。
它还使查找特定行变得更加容易,这可以使一些搜索和调试变得更加容易。
如果您想了解更多有关使用XML的信息,XDB开发人员指南将详细讨论使用XML的来龙去脉。https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/index.html
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
733次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
644次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
563次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
510次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
506次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
494次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
477次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
436次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
369次阅读
2025-05-05 19:28:36