Данные примерно такие (реальный файл весит около 17 Мб):
<address>
<область id="5">
<город id="6">
<микрорайон id="7" />
</область>
<область id="3f">
<посёлок id="8" />
</область>
</address>
Необходимо получить элемент по идентификатору.
Такой запрос: collection("контейнер")/address//*[id="7"] занимает 10-20 секунд и для поставленных задач не подходит.
Такой:
{for $a in dbxml:lookup-attribute-index("контейнер", "id")
where $a = "7"
return $a}
занимает секунды две, но если испраить на
return $a/.. , а тем более на
for $a in dbxml:lookup-attribute-index("контейнер", "id")/.. ,
то время на малых документов увеличивается в разы.
Проверка большого документа занимает больше нескольких минут (проверять не стал, так как такой результат меня совсем не устраивает)