Для более подробной информации Google для Structured Component to an XMLIndex Index
.А вот маленький пример.
1) Подготовьте тестовый состав.
create table xindex_example(a number, b xmltype);
insert into xindex_example values(1,xmltype('<root><x>
<a>1</a>
<b>2</b>
</x>
</root>'));
2) Создать xmlindex с параметрами.
CREATE INDEX xindex_example_idx ON xindex_example (b) INDEXTYPE IS XDB.XMLIndex
PARAMETERS (q'~XMLTable my_test_group_tab
'/root/x'
columns a_val number path './a' , b_val number path './b'~');
;
Oracale автоматически создает таблицу my_test_group_tab, но вы не можете выполнить запрос из этой таблицы напрямую.(ORA-30967: operation directly on the Path Table is disallowed
)
Вы можете сделать desc my_test_group_tab, чтобы увидеть структуру.
3) Создайте индекс b + tree для таблицы создания
create index my_test_group_tab_idx on my_test_group_tab(a_val);
4) И протестируйте его.
select * from (
select x.* from xindex_example,xmltable('/root/x' passing b columns a_val number path './a' , b_val number path './b') x)
where a_val=1;
5) План выполнения:
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 50 | 3 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 1 | 50 | 3 (0)| 00:00:01 |
| 2 | TABLE ACCESS BY INDEX ROWID| MY_TEST_GROUP_TAB | 1 | 38 | 2 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | MY_TEST_GROUP_TAB_IDX | 1 | | 1 (0)| 00:00:01 |
| 4 | TABLE ACCESS BY USER ROWID | XINDEX_EXAMPLE | 1 | 12 | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------