[ https://issues.apache.org/jira/browse/JENA-1926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andy Seaborne closed JENA-1926. ------------------------------- Resolution: Information Provided > Query execution speed depends more on WHERE clause order than expected > ---------------------------------------------------------------------- > > Key: JENA-1926 > URL: https://issues.apache.org/jira/browse/JENA-1926 > Project: Apache Jena > Issue Type: Improvement > Components: ARQ > Affects Versions: Jena 3.15.0 > Reporter: Julian Gonggrijp > Priority: Minor > > The following query takes about 6.5 seconds with my dataset, which > unfortunately I cannot share. Note that {{?source}} is bound to a single IRI > in all queries below; I'm leaving that out for brevity. > {code:java} > PREFIX oa: <http://www.w3.org/ns/oa#> > PREFIX dcterms: <http://purl.org/dc/terms/> > CONSTRUCT { > ?annotation ?a ?b. > ?body ?c ?d. > ?target ?e ?f. > ?selector ?g ?h. > } WHERE { > ?annotation oa:hasBody ?body; > oa:hasTarget ?target; > dcterms:creator ?user; > ?a ?b. > ?target oa:hasSource ?source; > oa:hasSelector ?selector; > ?e ?f. > ?selector ?g ?h. > OPTIONAL { ?body ?c ?d }. > } > {code} > Compare this to the following query, which I believe is exactly equivalent > but takes only 2 seconds: > {code:java} > CONSTRUCT { > ?annotation ?a ?b. > ?body ?c ?d. > ?target ?e ?f. > ?selector ?g ?h. > } WHERE { > ?annotation oa:hasBody ?body. > OPTIONAL { ?body ?c ?d }. > ?annotation oa:hasTarget ?target; > dcterms:creator ?user; > ?a ?b. > ?target oa:hasSource ?source; > oa:hasSelector ?selector; > ?e ?f. > ?selector ?g ?h. > } > {code} > For comparison, leaving out the optional {{?body}} entirely, I get a query > that executes in 1.7 seconds: > {code:java} > CONSTRUCT { > ?annotation ?a ?b. > ?target ?e ?f. > ?selector ?g ?h. > } WHERE { > ?annotation oa:hasTarget ?target; > dcterms:creator ?user; > ?a ?b. > ?target oa:hasSource ?source; > oa:hasSelector ?selector; > ?e ?f. > ?selector ?g ?h. > } > {code} > I'm a novice to SPARQL, but coming from SQL, I wouldn't expect query > execution speed to depend so much on the order in which the criteria are > given. -- This message was sent by Atlassian Jira (v8.3.4#803005)