Dear Basex team,We are facing an xquery performance issue. Please find the query in below and please suggest any clue to optimize query
let $subbrk := (collection("867509_Voice_DECEMBER-19_Billed_1")/SUBCUSTBRK)
let $detailUsageTxn := $subbrk/DETAIL/TRANSACTION[@Usage = 'usage']
let $DistCallTypesAll := ($detailUsageTxn/SUB_SECTION/@Type)
let $DistCallTypes := ( for $r in $DistCallTypesAll group by $ct := $r return $ct)
//Here taking nearly 3 minutes
let $allmonths := distinct-values($subbrk/Month)
let $rowcnt := count($detailUsageTxn/SUB_SECTION)
let $months := $allmonths[position() le 10000]
let $opttype := 'NumVal'
let $durop := 'hh:mm:ss' return
(
if($DistCallTypes!=''
)
then(
for $month in $months
return
<R>
<GRPBY>{ $month }</GRPBY>{
if($opttype = 'NumVal') then
for $ct in $DistCallTypes
let $ctCnt := sum($detailUsageTxn/SUB_SECTION[data(@Type) = data($ct) and data(../../../Month) = $month]/@Calls)
//Here taking 4 to 5 minutes
return element
{ replace(concat('_',data($ct)),'(\.|\[|\]|\\|\||\-|\^|\$|\?|\*|\+|\{|\}|\(|\)| |')', '_') }
{xs:decimal($ctCnt)}
else ()
}
</R>)
else()
)
Regards,
Chandrasekhar