Skip to content

Commit

Permalink
optimised query
Browse files Browse the repository at this point in the history
  • Loading branch information
hmottestad committed Jan 22, 2024
1 parent 920deb6 commit 8854880
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.eclipse.rdf4j.common.concurrent.locks.Lock;
import org.eclipse.rdf4j.common.iteration.CloseableIteration;
import org.eclipse.rdf4j.common.iteration.ExceptionConvertingIteration;
import org.eclipse.rdf4j.common.transaction.IsolationLevels;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Namespace;
import org.eclipse.rdf4j.model.Resource;
Expand Down Expand Up @@ -142,7 +143,7 @@ protected void notifyStatementRemoved(Statement st) {

@Override
public void begin() throws SailException {
logger.info("Begin connection transaction");
logger.debug("Begin connection transaction");

super.begin();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,13 @@ public void test() {
?stat epo:hasReceivedTenders ?bidders .
?resultnotice epo:refersToProcedure ?proc .
?resultnotice epo:refersToRole ?buyerrole .
?resultnotice epo:refersToRole ?buyerrole .
?resultnotice a epo:ResultNotice .
?resultnotice epo:hasDispatchDate ?ddate .
FILTER ( ?p != <http://publications.europa.eu/resource/authority/procurement-procedure-type/neg-wo-call>)
BIND(year(xsd:dateTime(?ddate)) AS ?year) .
{
SELECT DISTINCT ?buyerrole ?countryID WHERE {
?org epo:hasBuyerType ?buytype .
Expand All @@ -131,11 +133,6 @@ public void test() {
}
}
FILTER ( ?p != <http://publications.europa.eu/resource/authority/procurement-procedure-type/neg-wo-call>)
BIND(year(xsd:dateTime(?ddate)) AS ?year) .
} GROUP BY ?countryID ?year
Expand Down Expand Up @@ -170,7 +167,7 @@ private static Explanation runQuery(SailRepositoryConnection connection, String
StopWatch stopWatch = StopWatch.createStarted();
TupleQuery tupleQuery = connection.prepareTupleQuery(query);
tupleQuery.setMaxExecutionTime(60*10);
Explanation explain = tupleQuery.explain(Explanation.Level.Optimized);
Explanation explain = tupleQuery.explain(Explanation.Level.Timed);
// System.out.println(explain);
// System.out.println();
System.out.println("Took: " + stopWatch.formatTime());
Expand Down
123 changes: 123 additions & 0 deletions qendpoint-store/src/test/resources/queryplan10.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
Distinct (resultSizeActual=12, totalTimeActual=9.8s, selfTimeActual=0.048ms)
Projection (resultSizeActual=12, totalTimeActual=9.8s, selfTimeActual=0.078ms)
├── ProjectionElemList
│ ProjectionElem "countryID"
│ ProjectionElem "year"
│ ProjectionElem "amountLots"
│ ProjectionElem "numSingleBidders"
└── Extension (resultSizeActual=12, totalTimeActual=9.8s, selfTimeActual=0.048ms)
Group (countryID, year) (resultSizeActual=12, totalTimeActual=9.8s, selfTimeActual=44.1ms)
Join (HashJoinIteration) (resultSizeActual=53.4K, totalTimeActual=9.8s, selfTimeActual=53.9ms)
╠══ Extension (resultSizeActual=70.0K, totalTimeActual=2.3s, selfTimeActual=48.9ms) [left]
║ ├── Join (JoinIterator) (resultSizeActual=70.0K, totalTimeActual=2.3s, selfTimeActual=81.9ms)
║ │ ╠══ Join (JoinIterator) (resultSizeActual=78.3K, totalTimeActual=2.1s, selfTimeActual=86.0ms) [left]
║ │ ║ ├── Join (JoinIterator) (resultSizeActual=78.3K, totalTimeActual=1.9s, selfTimeActual=115ms) [left]
║ │ ║ │ ╠══ Join (JoinIterator) (resultSizeActual=78.3K, totalTimeActual=1.7s, selfTimeActual=84.7ms) [left]
║ │ ║ │ ║ ├── Join (JoinIterator) (resultSizeActual=78.3K, totalTimeActual=1.5s, selfTimeActual=88.1ms) [left]
║ │ ║ │ ║ │ ╠══ Join (JoinIterator) (resultSizeActual=84.5K, totalTimeActual=1.3s, selfTimeActual=112ms) [left]
║ │ ║ │ ║ │ ║ ├── Join (JoinIterator) (resultSizeActual=84.5K, totalTimeActual=1.1s, selfTimeActual=277ms) [left]
║ │ ║ │ ║ │ ║ │ ╠══ Join (JoinIterator) (resultSizeActual=85.4K, totalTimeActual=589ms, selfTimeActual=62.4ms) [left]
║ │ ║ │ ║ │ ║ │ ║ ├── Join (JoinIterator) (resultSizeActual=57.1K, totalTimeActual=373ms, selfTimeActual=155ms) [left]
║ │ ║ │ ║ │ ║ │ ║ │ ╠══ StatementPattern [index: SPO] (resultSizeActual=76.0K, totalTimeActual=114ms, selfTimeActual=114ms) [left]
║ │ ║ │ ║ │ ║ │ ║ │ ║ s: Var (name=proc)
║ │ ║ │ ║ │ ║ │ ║ │ ║ p: Var (name=_const_f5e5585a_uri, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type, anonymous)
║ │ ║ │ ║ │ ║ │ ║ │ ║ o: Var (name=_const_be18ee7b_uri, value=http://data.europa.eu/a4g/ontology#Procedure, anonymous)
║ │ ║ │ ║ │ ║ │ ║ │ ╚══ Filter (resultSizeActual=57.1K, totalTimeActual=105ms, selfTimeActual=26.1ms) [right]
║ │ ║ │ ║ │ ║ │ ║ │ ├── Compare (!=)
║ │ ║ │ ║ │ ║ │ ║ │ │ Var (name=p)
║ │ ║ │ ║ │ ║ │ ║ │ │ ValueConstant (value=http://publications.europa.eu/resource/authority/procurement-procedure-type/neg-wo-call)
║ │ ║ │ ║ │ ║ │ ║ │ └── StatementPattern [index: SPO] (resultSizeActual=72.9K, totalTimeActual=78.7ms, selfTimeActual=78.7ms)
║ │ ║ │ ║ │ ║ │ ║ │ s: Var (name=proc)
║ │ ║ │ ║ │ ║ │ ║ │ p: Var (name=_const_9c756f6b_uri, value=http://data.europa.eu/a4g/ontology#hasProcedureType, anonymous)
║ │ ║ │ ║ │ ║ │ ║ │ o: Var (name=p)
║ │ ║ │ ║ │ ║ │ ║ └── StatementPattern [index: SPO] (resultSizeActual=85.4K, totalTimeActual=153ms, selfTimeActual=153ms) [right]
║ │ ║ │ ║ │ ║ │ ║ s: Var (name=proc)
║ │ ║ │ ║ │ ║ │ ║ p: Var (name=_const_9c3f1eec_uri, value=http://data.europa.eu/a4g/ontology#hasProcurementScopeDividedIntoLot, anonymous)
║ │ ║ │ ║ │ ║ │ ║ o: Var (name=lot)
║ │ ║ │ ║ │ ║ │ ╚══ StatementPattern [index: SPO] (resultSizeActual=84.5K, totalTimeActual=213ms, selfTimeActual=213ms) [right]
║ │ ║ │ ║ │ ║ │ s: Var (name=stat)
║ │ ║ │ ║ │ ║ │ p: Var (name=_const_25686184_uri, value=http://data.europa.eu/a4g/ontology#concernsSubmissionsForLot, anonymous)
║ │ ║ │ ║ │ ║ │ o: Var (name=lot)
║ │ ║ │ ║ │ ║ └── StatementPattern [index: SPO] (resultSizeActual=84.5K, totalTimeActual=85.5ms, selfTimeActual=85.5ms) [right]
║ │ ║ │ ║ │ ║ s: Var (name=stat)
║ │ ║ │ ║ │ ║ p: Var (name=_const_f5e5585a_uri, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type, anonymous)
║ │ ║ │ ║ │ ║ o: Var (name=_const_ea79e75_uri, value=http://data.europa.eu/a4g/ontology#SubmissionStatisticalInformation, anonymous)
║ │ ║ │ ║ │ ╚══ StatementPattern [index: SPO] (resultSizeActual=78.3K, totalTimeActual=92.1ms, selfTimeActual=92.1ms) [right]
║ │ ║ │ ║ │ s: Var (name=stat)
║ │ ║ │ ║ │ p: Var (name=_const_98c73a3c_uri, value=http://data.europa.eu/a4g/ontology#hasReceivedTenders, anonymous)
║ │ ║ │ ║ │ o: Var (name=bidders)
║ │ ║ │ ║ └── StatementPattern [index: SPO] (resultSizeActual=78.3K, totalTimeActual=162ms, selfTimeActual=162ms) [right]
║ │ ║ │ ║ s: Var (name=resultnotice)
║ │ ║ │ ║ p: Var (name=_const_183bd06d_uri, value=http://data.europa.eu/a4g/ontology#refersToProcedure, anonymous)
║ │ ║ │ ║ o: Var (name=proc)
║ │ ║ │ ╚══ StatementPattern [index: SPO] (resultSizeActual=78.3K, totalTimeActual=130ms, selfTimeActual=130ms) [right]
║ │ ║ │ s: Var (name=resultnotice)
║ │ ║ │ p: Var (name=_const_6aa9a9c_uri, value=http://data.europa.eu/a4g/ontology#refersToRole, anonymous)
║ │ ║ │ o: Var (name=buyerrole)
║ │ ║ └── StatementPattern [index: SPO] (resultSizeActual=78.3K, totalTimeActual=64.2ms, selfTimeActual=64.2ms) [right]
║ │ ║ s: Var (name=resultnotice)
║ │ ║ p: Var (name=_const_f5e5585a_uri, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type, anonymous)
║ │ ║ o: Var (name=_const_77e914ad_uri, value=http://data.europa.eu/a4g/ontology#ResultNotice, anonymous)
║ │ ╚══ StatementPattern [index: SPO] (resultSizeActual=70.0K, totalTimeActual=85.8ms, selfTimeActual=85.8ms) [right]
║ │ s: Var (name=resultnotice)
║ │ p: Var (name=_const_1b0b00ca_uri, value=http://data.europa.eu/a4g/ontology#hasDispatchDate, anonymous)
║ │ o: Var (name=ddate)
║ └── ExtensionElem (year)
║ FunctionCall (http://www.w3.org/2005/xpath-functions#year-from-dateTime)
║ FunctionCall (http://www.w3.org/2001/XMLSchema#dateTime)
║ Var (name=ddate)
╚══ Distinct (new scope) (resultSizeActual=61.6K, totalTimeActual=7.4s, selfTimeActual=486ms) [right]
Projection (resultSizeActual=1.0M, totalTimeActual=6.9s, selfTimeActual=115ms)
╠══ ProjectionElemList
║ ProjectionElem "buyerrole"
║ ProjectionElem "countryID"
╚══ Join (JoinIterator) (resultSizeActual=1.0M, totalTimeActual=6.8s, selfTimeActual=864ms)
├── Join (JoinIterator) (resultSizeActual=1.0M, totalTimeActual=5.2s, selfTimeActual=910ms) [left]
│ ╠══ Join (JoinIterator) (resultSizeActual=1.0M, totalTimeActual=3.6s, selfTimeActual=894ms) [left]
│ ║ ├── Join (JoinIterator) (resultSizeActual=1.0M, totalTimeActual=1.9s, selfTimeActual=301ms) [left]
│ ║ │ ╠══ Filter (resultSizeActual=70.2K, totalTimeActual=98.2ms, selfTimeActual=9.14ms) [left]
│ ║ │ ║ ├── Compare (!=)
│ ║ │ ║ │ Var (name=buytype)
│ ║ │ ║ │ ValueConstant (value=http://publications.europa.eu/resource/authority/buyer-legal-type/eu-int-org)
│ ║ │ ║ └── StatementPattern [index: SPO] (resultSizeActual=74.3K, totalTimeActual=89.1ms, selfTimeActual=89.1ms)
│ ║ │ ║ s: Var (name=org)
│ ║ │ ║ p: Var (name=_const_1abd8d4b_uri, value=http://data.europa.eu/a4g/ontology#hasBuyerType, anonymous)
│ ║ │ ║ o: Var (name=buytype)
│ ║ │ ╚══ StatementPattern [index: SPO] (resultSizeActual=1.0M, totalTimeActual=1.5s, selfTimeActual=1.5s) [right]
│ ║ │ s: Var (name=buyerrole)
│ ║ │ p: Var (name=_const_beb855c2_uri, value=http://data.europa.eu/a4g/ontology#playedBy, anonymous)
│ ║ │ o: Var (name=org)
│ ║ └── StatementPattern [index: SPO] (resultSizeActual=1.0M, totalTimeActual=860ms, selfTimeActual=860ms) [right]
│ ║ s: Var (name=org)
│ ║ p: Var (name=_const_beb18915_uri, value=https://www.w3.org/ns/legal#registeredAddress, anonymous)
│ ║ o: Var (name=orgaddress)
│ ╚══ StatementPattern [index: SPO] (resultSizeActual=1.0M, totalTimeActual=678ms, selfTimeActual=678ms) [right]
│ s: Var (name=orgaddress)
│ p: Var (name=_const_2f7de0e1_uri, value=http://data.europa.eu/a4g/ontology#hasCountryCode, anonymous)
│ o: Var (name=countrycode)
└── StatementPattern [index: SPO] (resultSizeActual=1.0M, totalTimeActual=707ms, selfTimeActual=707ms) [right]
s: Var (name=countrycode)
p: Var (name=_const_a825a5f4_uri, value=http://purl.org/dc/elements/1.1/identifier, anonymous)
o: Var (name=countryID)
GroupElem (amountLots)
Count (Distinct)
Var (name=lot)
GroupElem (numSingleBidders)
Sum
If
Compare (=)
Var (name=bidders)
ValueConstant (value="1"^^<http://www.w3.org/2001/XMLSchema#integer>)
ValueConstant (value="1"^^<http://www.w3.org/2001/XMLSchema#integer>)
ValueConstant (value="0"^^<http://www.w3.org/2001/XMLSchema#integer>)
ExtensionElem (amountLots)
Count (Distinct)
Var (name=lot)
ExtensionElem (numSingleBidders)
Sum
If
Compare (=)
Var (name=bidders)
ValueConstant (value="1"^^<http://www.w3.org/2001/XMLSchema#integer>)
ValueConstant (value="1"^^<http://www.w3.org/2001/XMLSchema#integer>)
ValueConstant (value="0"^^<http://www.w3.org/2001/XMLSchema#integer>)

0 comments on commit 8854880

Please sign in to comment.