У меня есть запрос delete/insert, который я бы хотел оптимизировать, если это возможно. Запрос удаляет/вставляет до 50 объектов за раз. Мои тесты Jmeter показывают, что предложение DELETE занимает в 4 раза больше по сравнению с INSERT: delete занимает около 3300 мс, а вставка занимает около 860 мс. Я хотел бы улучшить предложение DELETE. Я думал об использовании FILTER, но мне сказали, что он не будет хорошо масштабироваться. Любые рекомендации очень ценятся. То, что я прямо сейчас:оптимизация запроса sparql
DELETE {
?s ?p ?o.
?collection dc:identifier ?cid;
rdf:type ?ct;
rdf:li ?list.
?list rdf:first ?first;
rdf:rest ?rest.
}
WHERE
{
{ ?s dc:identifier "11111"^^xsd:int; ?p ?o. }
UNION { ?s dc:identifier "22222"^^xsd:int; ?p ?o.}
UNION {?s dc:identifier "33333"^^xsd:int; ?p ?o.}
UNION{} UNION{}.......
OPTIONAL{
?s dc:hasPart ?collection.
?collection dc:identifier ?cid;
rdf:type ?ct;
rdf:li ?list.
?list rdf:first ?first;
rdf:rest ?rest.
}
INSERT DATA
{
GRAPH <http://test.org/>
{.....}
GRAPH <http://test.org/>
{.....}
GRAPH....
}
Спасибо для вас предложение - я попытался с помощью значения, но скорость для удаления остается неизменной. Однако это было сделано. – user2917629
@ user2917629 У вас есть основания полагать, что удаление работает медленнее, чем «должно быть»? Ваш «delete where» требует запроса, а затем создает тройки на основе запроса. «Вставить данные» просто вставляет литеральные данные. Для меня имеет смысл, что «delete where» займет больше времени. –
Да, вы правы, у удаления есть еще много дел. Я смог сократить 200 мс, добавив дополнительные ОПЦИИ в предложение WHERE, поэтому, я думаю, я оставлю это на этом. – user2917629