Oh wait, why not predict the performance myself..
In the original code the grouping algorithm starts with picking the first of
each ACCT_NBR:
<xsl:for-each select="PROJECTION[count(. | key('group-by-accountnbr', ACCT_NBR)[1]) =
1]">
Well, that is a *very* expensive operation. The index is accessed for _each_
PROJECTION elements, so
about 2000 times! And if each distinct ACCT_NBR 'contains' about 10
PROJECTIONs, 9 out of 10 times
the predicate gives the same result. Very inefficient... :-(
Unfortunatily, I can't think of any other way of determining the first of a
group other than
variations on this theme or performing sorting in a previous step and using the
index on first items
I suggested.
Anyone good ideas?
Grtz,
Geert