Page MenuHomePhabricator
Paste P5706

Regular vs. named subquery performance
ActivePublic

Authored by Lucas_Werkmeister_WMDE on Jul 7 2017, 9:11 PM.
Referenced Files
F8651129: Regular vs. named subquery performance
Jul 7 2017, 11:53 PM
F8649372: Regular vs. named subquery performance
Jul 7 2017, 9:11 PM
Subscribers
None
n=100
for ((i=0;i<n;i++)); do
time -p curl 'https://query.wikidata.org/bigdata/namespace/wdq/sparql?query=SELECT%20%3Fentity%20%3FentityLabel%20%3Fcount%20WITH%20%7B%0A%20%20SELECT%20%3Fentity%20(COUNT(%3Fstatement)%20AS%20%3Fcount)%20WHERE%20%7B%0A%20%20%20%20hint%3AQuery%20hint%3Aoptimizer%20%22None%22.%0A%20%20%20%20%3Fstatement%20wikibase%3Arank%20wikibase%3ADeprecatedRank.%0A%20%20%20%20%3Fentity%20%3Fp%20%3Fstatement.%0A%20%20%7D%0A%20%20GROUP%20BY%20%3Fentity%0A%20%20HAVING(%3Fcount%20%3E%2010)%0A%20%20ORDER%20BY%20DESC(%3Fcount)%0A%20%20LIMIT%20100%0A%20%20OFFSET%200%0A%7D%20AS%20%25results%20WHERE%20%7B%0A%20%20INCLUDE%20%25results.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%2Cen%22.%20%7D%0A%7D%0AORDER%20BY%20DESC(%3Fcount)%23'"$RANDOM" &> /dev/null
sleep 1
done 2>&1 |
grep real |
cut -d' ' -f2 > named-subquery
for ((i=0;i<n;i++)); do
time -p curl 'https://query.wikidata.org/bigdata/namespace/wdq/sparql?query=SELECT%20%3Fentity%20%3FentityLabel%20%3Fcount%20WHERE%20%7B%0A%7B%0A%20%20SELECT%20%3Fentity%20(COUNT(%3Fstatement)%20AS%20%3Fcount)%20WHERE%20%7B%0A%20%20%3Fstatement%20wikibase%3Arank%20wikibase%3ADeprecatedRank.%0A%20%20%3Fentity%20%3Fp%20%3Fstatement.%0A%7D%0AGROUP%20BY%20%3Fentity%20%3FentityLabel%0AHAVING(%3Fcount%20%3E%2010)%0AORDER%20BY%20DESC(%3Fcount)%0ALIMIT%20100%0AOFFSET%200%0A%7D%0A%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22.%20%7D%0A%7D%20ORDER%20BY%20DESC(%3Fcount)%23'"$RANDOM" &>/dev/null
sleep 1
done 2>&1 |
grep real |
cut -d' ' -f2 > regular-subquery
paste regular-subquery named-subquery > subqueries
gnuplot -e '
set terminal png;
set output "subqueries.png";
set key left top;
set ylabel "seconds";
plot "subqueries" using 0:1 title "regular subquery", "" using 0:2 title "named subquery"
'