Это не время запроса, это время, когда все данные доступны (т.е. когда драйвер получил все данные).
Время запроса можно посмотреть на вкладке Таблица .
Пример:
Started streaming 10 records after 1 ms and completed after 2 ms
Ваш запрос не параметризован, поэтому каждый раз, когда вы меняете идентификатор в своем запросе, Neo4j вынужден вычислять план запроса, и поэтому вы теряете несколько мс.
MATCH (s:product {id:$id})-[r]->(o)
WHERE o:ExAttrs OR o:ProdAttrs
return s.item_sku_id, TYPE(r), o
И посмотрите здесь , как использовать параметр с драйвером по вашему выбору.
EDIT:
public String query_partial_match(String skuid, String attrKey) {
return "MATCH (s:product {id:'" + skuid + "'})-[r]->(o) " +
"WHERE " +
"(o:ExAttrs OR o:ProdAttrs) AND " +
"any(key in keys(o) WHERE key =~'(?i).*(" + attrKey + ").*') " +
"return s.item_sku_id, s.item_name, r, o";
}
У меня около 50 таких функций Java для динамической генерации строк запроса шифрования, а затем отправки запроса в «execute» драйвера API для получения результата. В приведенном выше примере я уже использую способ «параметра» для генерации правильного запроса шифра. Тем не менее, эта параметризация имеет место только в моем коде генерации запроса, но в 'execute' нет параметризации. Мой коллега обернул собственный API-драйвер Neo4j в Neo4jSearchAPI, у которого есть метод execute для получения строки запроса шифрования в качестве параметра для запроса на графике. И мой код, как указано выше, генерирует такие зашифрованные строки запроса.
Так что, если я действительно хочу использовать параметризацию, наш упакованный Neo4jSearchAPI должен это поддерживать. По сути, мои 50 функций генерации запросов должны быть закодированы в Neo4jSearchAPI, а не в моем собственном коде, который генерирует только строку шифра. Это правильно?