In vielen SPARQL-Systemen können Sie Ihre Abfragen optimieren, indem Sie die Tripel in einem Diagrammmuster neu anordnen. In anderen können Sie nicht (die Abfrage-Engine optimiert sie mit einigen eigenen Heuristiken).Optimieren von SPARQL-Abfragen in MarkLogic
In Jena können Sie Abfragen optimieren, indem Sie dreifache Muster setzen, die die Ergebnismenge in der Abfrage am meisten einschränken (und dabei immer zu erwähnen eine Variable, die bereits gebunden ist). In anderen Abfrage-Engines funktioniert diese Strategie nicht (da sie die Abfrage anders verarbeiten)
Offenbar ist Marklogic SPARQL empfindlich auf die Reihenfolge der Dreifachmuster (Ich habe einige Abfragen neu angeordnet und festgestellt, dass sie gehen werden schneller oder langsamer, bis zu 10x). Aber ich kann keinen Reim oder einen Grund dafür finden, welche Sequenzen schneller oder langsamer werden. Die Heuristiken, die ich erfolgreich mit Jena verwendet habe, funktionieren nicht mit MarkLogic.
Ich habe über die MarkLogic-Dokumentation gegooglet und habe keine Hinweise dazu gefunden. Haben irgendwelche MarkLogic-Engine-Writer Anmerkungen dazu gemacht?
"In vielen SPARQL-Systemen können Sie Ihre Abfragen optimieren, indem Sie die Tripel in einem Diagrammmuster neu anordnen." Das ist eigentlich etwas überraschend, wenn es stimmt. soll gleichwertig sein. Haben Sie bestimmte Muster gefunden (z. B. wenn Sie früher Tripel mit weniger Übereinstimmungen platzieren, erzielen Sie schnellere Ergebnisse)? –
Die einzige Anforderung in SPARQL ist, dass die Ergebnisse unabhängig von der Reihenfolge in der Abfrage identisch sind. Leistung ist ein ganz anderes Thema. – scotthenninger
Die meisten Speicherschichten von Apache Jena führen eine teilweise Neuordnung durch (abhängig von der Version). es ist jedoch ziemlich hell. Wenn die teilweise Neuordnung zwei Dreifachmuster von gleicher Wichtigkeit hat, belässt sie sie in der gegebenen Reihenfolge. – AndyS