首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将clob转换为xmltype,最快的是xmltype()还是xmlparse(文档…)

将clob转换为xmltype,最快的是xmltype()还是xmlparse(文档…)
EN

Stack Overflow用户
提问于 2018-05-16 19:17:37
回答 1查看 132关注 0票数 2

问题很简单,我有一个很大的数据库,我打算转换一个大约40 is的列(是的,在一个90 is的表中,该列占40 is)和700-800万行,因此速度至关重要。

我使用的代码是这样的。

代码语言:javascript
复制
ALTER TABLE KJOERETOEY
RENAME column ORIGIN TO ORIGIN_OLD;
ALTER TABLE KJOERETOEY
  ADD ORIGIN XMLTYPE NULL;
UPDATE KJOERETOEY
SET ORIGIN = xmlparse(document ORIGIN_OLD);
ALTER TABLE KJOERETOEY
  drop column ORIGIN_OLD;

然后,在我空闲并等待它完成的时间里,我注意到存在一个xmltype.createXML,唯一的缺点是,如果数据为空,它将抛出一个错误,这是可以的,因为数据不应该为空。

所以问题是。

代码语言:javascript
复制
UPDATE KJOERETOEY
SET ORIGIN = xmlparse(document ORIGIN_OLD);

快于或慢于

代码语言:javascript
复制
UPDATE KJOERETOEY
SET ORIGIN = xmltype.createXML(ORIGIN_OLD);

有没有什么技巧可以用来提高这类操作的速度?

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 16:57:27

对于40 GB的XML数据,我假设大部分时间都花在写LOB数据上。

  1. 我不会用UPDATE做这件事,而是用新的结构创建一个新的表。此外,我会将旧的和新的列放在不同的表空间中,以便更容易地清理afterwards.
  2. For XMLTYPE,我会考虑将其存储为二进制

  1. 我会将其存储在安全文件中,而不是BASICFILE
  2. 中。如果您有高级压缩选项,我会尝试以压缩的形式存储二进制XML。

用一个小样本来测试它。

代码语言:javascript
复制
RENAME TABLE kjoeretoey TO kjoeretoey_old;

CREATE TABLE kjoeretoey (
  id number,
  origin XMLTYPE,
  ...
) XMLTYPE COLUMN origin STORE AS SECUREFILE BINARY XML (
  TABLESPACE my_xml_tablespace DISABLE STORAGE IN ROW COMPRESS HIGH 
);

INSERT INTO kjoeretoey (id, origin, ...) 
SELECT id, XMLTYPE(origin) ... FROM kjoeretoey_old;

DROP TABLE kjoeretoey_old;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50369482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档