У меня возникла проблема с использованием индекса в DB2 XML. У меня есть таблица базы данных с пользователями, состоящая из id + xml document + timestamp. Мне интересно найти пользователей и упорядочить их по дате присоединения.
Определение индекса:
create index idx_joindate on "Users"("userXML") generate keys
using xmlpattern '/*:User/*:joinDate' as sql timestamp;
SQL-запрос:
SELECT "Users".* FROM "Users"
ORDER BY
XMLCAST(
XMLQUERY('$i/*:User/*:joinDate' PASSING "userXML" AS "i")
as TIMESTAMP) DESC
FETCH FIRST 20 ROWS ONLY
XQuery:
xquery
let $sorted :=
for $user in db2-fn:xmlcolumn("Users.userXML")
order by xs:dateTime($user/*:User/*:joinDate) descending
return $user
for $user in subsequence($sorted, 1, 20)
return $user
Оба запроса на самом деле работают нормально, НО я ожидаю, что они будут использовать определенный индекс для joinDate. Этого не происходит ни для запроса XQuery, ни для запроса SQL.