WEB开发网
开发学院数据库Oracle Oracle XQuery查询、构建和转换XML 阅读

Oracle XQuery查询、构建和转换XML

 2007-05-05 12:04:35 来源:WEB开发网   
核心提示: 所选择的存储模型并非是影响 XQuery 表达式执行性能的唯一因素,在某些情况下,Oracle XQuery查询、构建和转换XML(8),XQuery 表达式本身的结构也可能导致性能问题,要监控 XQuery 表达式的性能,因此可能要继续调整查询以优化性能,对查询中包含的 XPath 表达

所选择的存储模型并非是影响 XQuery 表达式执行性能的唯一因素。在某些情况下,XQuery 表达式本身的结构也可能导致性能问题。要监控 XQuery 表达式的性能,可以打印并检查关联的 EXPLAIN PLAN。在 SQL*Plus 中,只需设置 AUTOTRACE 系统变量,即可打印 SQL 优化程序使用的执行路径。但要执行该操作,请确保创建 PLUSTRACE 角色,然后将其授予连接到数据库所使用的用户。有关如何执行此操作的信息,请参阅 Oracle 数据库 10g 第 2 版 (10.2) 文档中《SQL*Plus 用户指南和参考》一书中的“调整 SQL*Plus”一章。以下示例演示了如何通过检查 EXPLAIN PLAN 生成的执行计划来获得好处。假设您已经将 PLUSTRACE 角色授予默认用户 OE,以 OE/OE 的身份登录并运行以下查询:

SET AUTOTRACE ON EXPLAIN
SELECT count(*)
FROM oe.purchaseorder, XMLTable(
'for $i in /PurchaseOrder/User
where $i = "CJOHNSON"
return $i'
PASSING OBJECT_VALUE) ptab;

这将生成以下输出:

COUNT(*)
----------
9
Execution Plan
---------------------------------------------
Plan hash value: 4046110317
--------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 226 | 29 (0) | 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 226 | | |
| 2 | NESTED LOOPS | | 10782 | 2379K | 29 (0) | 00:00:01 |
|* 3 | TABLE ACCESS FULL | PURCHASEORDER | 1 | 226 | 5 (0) | 00:00:01 |
| 4 | COLLECTION ITERATOR P| XMLSEQUENCEFROMX| | | | |
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter(SYS_CHECKACL("ACLOID","OWNERID",xmltype('
...

您可能对为以上查询生成的执行计划并不满意。尤其是,所处理的行数可能非常大。由于 SQL 调整的主要目标是避免访问对结果没有任何影响的行,因此可能要继续调整查询以优化性能。对查询中包含的 XPath 表达式进行重新建模后,可以再次重试它,如下所示:

上一页  3 4 5 6 7 8 9 10  下一页

Tags:Oracle XQuery 查询

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接