I am running into some query time issues regarding range to range queryies.
I am using a cts:and-query with 2 cts:element-range-query inside the and-query.
Example:
let $lowVal := 200
let $hiVal := 500
let $results :=
<results>
<item>
<name>Item 1</name>
<rangeValues>
<intRangeLow>0</intRangeLow>
<intRangeHi>1000</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>300</intRangeLow>
<intRangeHi>400</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>500</intRangeLow>
<intRangeHi>1500</intRangeHi>
</rangeValues>
</item>
<item>
<name>Item 2</name>
<rangeValues>
<intRangeLow>0</intRangeLow>
<intRangeHi>20</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>30</intRangeLow>
<intRangeHi>40</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>50</intRangeLow>
<intRangeHi>60</intRangeHi>
</rangeValues>
</item>
<item>
<name>Item 3</name>
<rangeValues>
<intRangeLow>0</intRangeLow>
<intRangeHi>100</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>200</intRangeLow>
<intRangeHi>400</intRangeHi>
</rangeValues>
<rangeValues>
<intRangeLow>300</intRangeLow>
<intRangeHi>600</intRangeHi>
</rangeValues>
</item>
</results>
let $query :=
cts:element-query(xs:QName("rangeValues"),
cts:and-query((
cts:element-range-query(xs:QName("intRangeLo"),
"<=", $hiVal)),
cts:element-range-query(xs:QName("intRangeHi"),
">=", $loVal))
))
}
let $res := for $docs in cts:search($results/item, cts:and-query($query))
return $docs
This should return Item 1, Item3 but not Item2. I have multiple raneg values in
the DB, but this query seems to take a long time to run.
Any ideas how to optimize it ?
Thanks,
Tony Mariella
Raytheon Company
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general