xf:count() versus count()

Hi!

I use Tamino 4.1.4.4 and I’ve execute the same query in XQuery and in X-Query.
The X-Query was very fast but the XQuery was very very slow.
Here my queries:

X-Query:
count(test[id~= “1234”])

XQuery:
declare namespace tf="http://namespaces.softwareag.com/tamino/TaminoFunction"
let $b := input()/test
where tf:containsText($b/id, “1234”)
return

{count($b)}



Why is my XQuery slower than the X-Query?

Best Regards
Bj

Hello Bj

Hello Walter,

yes, my query was wrong. Thanks for your answer. No it works in an acceptable time.

Best regards
Bj

Hello Walter,

I have changed the query but the XQuery is too slow. Is there another problem in my queries? I can’t find the reason or is the XQuery slower than X-Query?

In my database there 460.000 Values with an IndexSpace of 1GB and a DataSpace of 1,6GB

My XQuery uses 74584 ms and my X-Query uses 160 ms.

Here is my XQuery:

declare namespace tf='http://namespaces.softwareag.com/tamino/TaminoFunction'
count(
for $b in input()/sendung
where (tf:containsText($b/id, 'Unfall') or
	   tf:containsText($b/sendungsname, 'Unfall') or
	   tf:containsText($b/event, 'Unfall') or
	   tf:containsText($b/sparte, 'Unfall') or
	   $b/sdate="Unfall" or
	   tf:containsText($b/moderation, 'Unfall') or
	   tf:containsText($b/material, 'Unfall') or
	   tf:containsText($b/sen_tca, 'Unfall') or
	   tf:containsText($b/sen_tce, 'Unfall') or
	   $b/sen_dauer="Unfall" or
	   tf:containsText($b/maskentyp, 'Unfall') or
	   $b/tapenr="Unfall" or
	   $b/stand="Unfall" or
	   $b/beitrag/nr="Unfall" or
	   tf:containsText($b/beitrag/titel, 'Unfall') or
	   tf:containsText($b/beitrag/redakteur, 'Unfall') or
	   tf:containsText($b/beitrag/sendeform, 'Unfall') or
	   tf:containsText($b/beitrag/kamera, 'Unfall') or
	   tf:containsText($b/beitrag/btrg_tca, 'Unfall') or
	   tf:containsText($b/beitrag/btrg_tce, 'Unfall') or
	   $b/beitrag/btrg_dauer="Unfall" or
	   $b/beitrag/ton="Unfall" or
	   $b/beitrag/bq="Unfall" or
	   tf:containsText($b/beitrag/zfg, 'Unfall') or
	   tf:containsText($b/beitrag/bemerkung, 'Unfall') or
	   $b/beitrag/dokumentar="Unfall" or
	   $b/beitrag/erfassungsdatum="Unfall" or
	   tf:containsText($b/beitrag/bearbeitung, 'Unfall') or
	   $b/beitrag/bearbeitungsdatum="Unfall" or
	   tf:containsText($b/beitrag/agenturtext, 'Unfall') or
	   tf:containsText($b/beitrag/bilderquelle, 'Unfall') or
	   tf:containsText($b/beitrag/originaltext, 'Unfall') or
	   $b/beitrag/deskriptor="Unfall" or
	   $b/beitrag/abgleich="Unfall" or
	   $b/beitrag/btrg_status="Unfall" or
	   $b/beitrag/btrg_verweis="Unfall" or
	   tf:containsText($b/beitrag/rechte, 'Unfall') or
	   $b/beitrag/idnr="Unfall" or
	   tf:containsText($b/beitrag/sequenz/herkunft, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/land, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/stadt, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/seq_tca, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/seq_tce, 'Unfall') or
	   $b/beitrag/sequenz/seq_dauer="Unfall" or
	   tf:containsText($b/beitrag/sequenz/topic, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/seq_beschreibung, 'Unfall') or
	   $b/beitrag/sequenz/hdate="Unfall" or
	   tf:containsText($b/beitrag/sequenz/video_id, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/o_ton, 'Unfall') or
	   tf:containsText($b/beitrag/sequenz/seq_verweis, 'Unfall'))
return $b)
</pre><BR><BR>Here is my X-Query:<BR><pre class="ip-ubbcode-code-pre">
count(sendung[(
	id~="Unfall" or
	sendungsname~="Unfall" or
	event~="Unfall" or
	sparte~="Unfall" or
	sdate="Unfall" or
	moderation~="Unfall" or
	material~="Unfall" or
	sen_tca~="Unfall" or
	sen_tce~="Unfall" or
	sen_dauer="Unfall" or
	maskentyp~="Unfall" or
	tapenr="Unfall" or
	stand="Unfall" or
	beitrag/nr="Unfall" or
	beitrag/titel~="Unfall" or
	beitrag/redakteur~="Unfall" or
	beitrag/sendeform~="Unfall" or
	beitrag/kamera~="Unfall" or
	beitrag/btrg_tca~="Unfall" or
	beitrag/btrg_tce~="Unfall" or
	beitrag/btrg_dauer="Unfall" or
	beitrag/ton="Unfall" or
	beitrag/bq="Unfall" or
	beitrag/zfg~="Unfall" or
	beitrag/bemerkung~="Unfall" or
	beitrag/dokumentar="Unfall" or
	beitrag/erfassungsdatum="Unfall" or
	beitrag/bearbeitung~="Unfall" or
	beitrag/bearbeitungsdatum="Unfall" or
	beitrag/agenturtext~="Unfall" or
	beitrag/bilderquelle~="Unfall" or
	beitrag/originaltext~="Unfall" or
	beitrag/deskriptor="Unfall" or
	beitrag/abgleich="Unfall" or
	beitrag/btrg_status="Unfall" or
	beitrag/btrg_verweis="Unfall" or
	beitrag/rechte~="Unfall" or
	beitrag/idnr="Unfall" or
	beitrag/sequenz/herkunft~="Unfall" or
	beitrag/sequenz/land~="Unfall" or
	beitrag/sequenz/stadt~="Unfall" or
	beitrag/sequenz/seq_tca~="Unfall" or
	beitrag/sequenz/seq_tce~="Unfall" or
	beitrag/sequenz/seq_dauer="Unfall" or
	beitrag/sequenz/topic~="Unfall" or
	beitrag/sequenz/seq_beschreibung~="Unfall" or
	beitrag/sequenz/hdate="Unfall" or
	beitrag/sequenz/video_id~="Unfall" or
	beitrag/sequenz/o_ton~="Unfall" or
	beitrag/sequenz/seq_verweis~="Unfall")
])



The results are the same.

Best regards
Bj

Hello Bjorn,
My experience with count() is about the same (i have collection of abt. 220.000 docs). I think the problem is, that Tamino first selects all the matching documents and counts them afterwards. If the size of the result set is big, the performance goes close to zero, this is my experience… Hope there will be some optimisation soon, i need it too to make some statistics…

bye, Pavel