0

我通过使用多个字段使用以下两个查询组

 CTS Query :

xquery version "1.0-ml";
let $filterData := (for $doc in cts:search(doc(), cts:and-query((cts:collection-query("studentData"),
cts:collection-query("Student"))), ("unfiltered"))
return <result>{$doc/tXML/Student/Class, $doc/tXML/Student/Status,
$doc/tXML/Student/TotalRemarks}</result> )
return element result { for $cls in fn:distinct-values($filterData/Class) 
return (    
let $data1 := $filterData[Class eq $cls] 
for $status in fn:distinct-values($data1/Status) 
return ( element object {  element groubBy{attribute attr {'Class'}, $cls},
element groubBy{attribute attr {'Status'}, $status},
element aggregation {attribute attr {'Remarks'}, fn:sum($data1[Status eq $status]/TotalRemarks)}}) ) } 


Optic Query :

 xquery version "1.0-ml";
 import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; 
op:from-view("STUDT", "StudentDataView")
  => op:group-by(("Class ","Status"), (
  op:sum("TotalRemarks", "TotalRemarks"),
  ))
  =>op:select(("Class","Status","TotalRemarks"))
  
  =>op:result()

与类似数据集的 CTS 查询相比,在此 Optic 查询中花费的时间更少。如果基于 TDE 的光学查询,那么它如何花费更多时间。

4

0 回答 0