|
Code Listing 4: XPath Query Test for Both Storage Types
The following tests an XPath query against structured (object-relational) XML storage:
SQL> set autotrace on
SQL> select extractValue(po,'/PurchaseOrder/Reference')
2 from structured_xml
3 where existsNode(po,
4 '/PurchaseOrder/LineItems/LineItem[@ItemNumber="1" and Part/@Id="715515009058"]') = 1
5 /
EXTRACTVALUE(PO,'/PURCHASEORDE
------------------------------
ALLEN-20011127121042259PST
ALLEN-20011127121055378PST
BLAKE-2002100912333601PDT
FORD-20011127121040887PST
MARTIN-20011127121051563PST
MARTIN-20011127121051993PST
6 rows selected.
Elapsed: 00:00:00.53
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'STRUCTURED_XML'
3 1 COLLECTION ITERATOR (PICKLER FETCH)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
6377 consistent gets
0 physical reads
0 redo size
625 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
6 rows processed
The following tests an XPath query against CLOB XML storage:
SQL> select extractValue(po,'/PurchaseOrder/Reference')
2 from clob_xml
3 where existsNode(po,
4 '/PurchaseOrder/LineItems/LineItem[@ItemNumber="1" and Part/@Id="715515009058"]') = 1
5 /
EXTRACTVALUE(PO,'/PURCHASEORDER/REFERENCE')
----------------------------------------------------------------------------------------
ALLEN-20011127121042259PST
ALLEN-20011127121055378PST
BLAKE-2002100912333601PDT
FORD-20011127121040887PST
MARTIN-20011127121051563PST
MARTIN-20011127121051993PST
6 rows selected.
Elapsed: 00:00:01.79
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (FULL) OF 'CLOB_XML'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1625 consistent gets
757 physical reads
0 redo size
625 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
6 rows processed
|