Я хотел бы спросить о том, как ускорить выбор запросов в базе Basex. У меня есть, например, следующий XML в базе данных с большим количеством событий (650000 приблизительно)Могу ли я использовать индексы для ускорения выбора запросов по диапазонам дат в BaseX?
<EventList>
<Event>
<ID>317849</ID>
<Type>Measurement</Type>
<TimeStamp>2016-03-15T18:00:09.409</TimeStamp>
<Space>BIOCAT</Space>
<SourceID>BIOCAT.TE310A</SourceID>
<Content>
<Measurement>
<value>920</value>
</Measurement>
</Content>
</Event>
<Event>
<ID>317850</ID>
<Type>Measurement</Type>
<TimeStamp>2016-03-15T18:05:09.409</TimeStamp>
<Space>BIOCAT</Space>
<SourceID>BIOCAT.TE310A</SourceID>
<Content>
<Measurement>
<value>920</value>
</Measurement>
</Content>
</Event>
</EventList>
Я извлекая события с помощью следующего кода, который выбирает по отношению к DateTime узла Timestamp
for $b in doc('mydb/my.xml')//EventList/Event
let $date_string as xs:string := xs:string($b/TimeStamp/data())
let $date as xs:dateTime := xs:dateTime($date_string)
where $date ge xs:dateTime('"+startdate+"')
and $date le xs:dateTime('"+enddate+"')
and $b/Type='"+EventType+"'
return $b
Но он очень медленный, он возвращает одну минуту, чтобы вернуть 60 событий. В базе данных BaseX имеется много данных. Как ускорить запрос или мою базу данных?
Если вы правильно отложите XML и добавите некоторые разумные штрихи к вашему коду XQuery перед публикацией, шансы сильно увеличатся, кто-то прочитает ваш код. Кроме того, «многие» не являются разумной количественной оценкой, дают количество документов и узлов вместо этого, чтобы предоставить некоторые аргументированные числа, то же самое относится к «медленным». Наконец, почему вы обычно пишете заголовки все в нижнем регистре, а в правиле вопроса? –