Hi Using Basex 7.0.2 and the factbook.xml database, I observe the following:
declare variable $data:=db:open("factbook");
declare function local:myid1($id){ $data//*[@id=$id] }; (: get a 1000 ids to test :) let $ids:=subsequence($data//@province/string(.),1,1000)
for $s in $ids return local:myid1($s)
Takes 30 seconds!
Replacing the final line with
for $s in $ids return $data//*[@id=$s]
The time is 123ms.
/Andy