I've found that cts:element-values() is *much* faster when you don't use 
a query to filter.  For example,

cts:element-values (xs:QName("foo"), "a")

is 25x faster than

cts:element-values (xs:QName("foo"), "a", 
cts:element-value-query(xs:QName("bar"), "baz"))

when every document indexed by foo in fact has bar=baz, ie when the 
query is essentially a no-op.

Consequently, we're taking what used to be a bunch of large range 
indexes and breaking them up into a lot of smaller range indexes, each 
of which we can query independently (faster).

What I'm wondering is if anybody would care to speculate on whether 
having a large number of small(er) indexes will pose some other 
performance problem.  Presumably at least some of the keys will be 
shared across these indexes, but the values (the fragment/document 
references) should not, so overall storage should be only slightly larger?

-- 
Michael Sokolov
Engineering Director
www.ifactory.com

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to