Sql EXTRACTVALUE-XMLType查询延迟
我有两个相同的问题:Sql EXTRACTVALUE-XMLType查询延迟,sql,oracle,plsql,oracle10g,Sql,Oracle,Plsql,Oracle10g,我有两个相同的问题: 1) select * from cfm_t_dmp; 2) SELECT CATEGORY_ID, STATUS, USERNAME, VALID_FROM, EXTRACTVALUE ( XMLType (data_definition), '/customer/type/permissions/text()'), EXTRACTVALUE ( XMLType (data_definition),
1) select * from cfm_t_dmp;
2) SELECT CATEGORY_ID,
STATUS,
USERNAME,
VALID_FROM,
EXTRACTVALUE (
XMLType (data_definition),
'/customer/type/permissions/text()'),
EXTRACTVALUE (
XMLType (data_definition),
'/bundle/configuration/permissions/text()'),
AB_LOCK
FROM cfm_t_dmp
查询1)执行得非常快,查询2)经过几分钟的处理后,我看不到结果
主要的区别是提取值,我以前执行过查询,查询速度很快
我可以以任何方式调整查询吗?或者这是一个数据库问题
谢谢,您的第二个查询速度较慢,因为Oracle必须在这些XPath上搜索您的XML类型。如果您有大量数据,或者XML内容很大,那么这将是大量额外的工作,并且会降低查询速度 为了加快速度:如果XPath不会更改,XML数据也不会更改,那么可以添加一个额外的列,其中包含
EXTRACTVALUE
表达式的结果。查询该数据会更快,因为您的查询不需要调用EXTRACTVALUE
(因为它只读取新列中的数据),但这需要在插入或更新时预先填充它
显然,在Oracle中对XML数据进行索引也是可能的,尽管我自己从未尝试过:虽然您没有测试这些XPath的值的条件,但我不确定索引是否有帮助。您的第二次查询速度较慢,因为Oracle必须在这些XPath上搜索您的XML类型。如果您有大量数据,或者XML内容很大,那么这将是大量额外的工作,并且会降低查询速度 为了加快速度:如果XPath不会更改,XML数据也不会更改,那么可以添加一个额外的列,其中包含
EXTRACTVALUE
表达式的结果。查询该数据会更快,因为您的查询不需要调用EXTRACTVALUE
(因为它只读取新列中的数据),但这需要在插入或更新时预先填充它
显然,在Oracle中对XML数据进行索引也是可能的,尽管我自己从未尝试过:虽然您没有测试这些XPath的值的条件,但我不确定索引是否有帮助。数据定义列的类型是什么?如果是CLOB,您可能希望尝试将其更改为XMLTYPE并从select语句中删除强制转换。是的,它是CLOB。但是查询在CLOB之前是有效的。在CLOB之前是有效的吗?你改变了什么使它不能工作?“工作”。。。返回值为几秒。可能问题与数据CLOB有关,存储在不同的表空间中。对不起,我仍然不知道“以前工作”是什么意思。那是在你增加价值之前吗?或者查询在其当前状态下是否正常工作,并且在您未做任何更改的情况下突然停止工作?
data\u definition
列的类型是什么?如果是CLOB,您可能希望尝试将其更改为XMLTYPE并从select语句中删除强制转换。是的,它是CLOB。但是查询在CLOB之前是有效的。在CLOB之前是有效的吗?你改变了什么使它不能工作?“工作”。。。返回值为几秒。可能问题与数据CLOB有关,存储在不同的表空间中。对不起,我仍然不知道“以前工作”是什么意思。那是在你增加价值之前吗?或者查询在其当前状态下是否正常工作,并且在您未做任何更改的情况下突然停止工作?