パフォーマンスが非常に悪い(約30秒)Cypherクエリがあります:
START foo=node:foos('Name:*')
MATCH foo<-[:HasMember]-()<-[:PartOf]-()<-[:Connected]-bar
WHERE foo.Name IN ["name1", "name2"] AND bar.Enabled = true
RETURN DISTINCT bar.Guid AS Guid, foo.Name AS Name
何が起こっているのかと思うのは、Luceneインデックスを使用してすべての値を引き出し、グラフ検索を使用してセット内の名前と照合することです。クエリを以下の名前に変更すると、桁違いに高速になるためです。 (16ミリ秒):
START foo=node:foos('Name:"name1" OR Name:"name2"')
MATCH foo<-[:HasMember]-()<-[:PartOf]-()<-[:Connected]-bar
WHERE bar.Enabled = true
RETURN DISTINCT bar.Guid AS Guid, foo.Name AS Name
名前セットからLuceneクエリを手動で作成することなく、最初のクエリを2番目のクエリと同じ速さで実行する方法はありますか?
他のオプションはトラバーサルを使用することですが、可能であればサイファーランドにとどまるのが好きです。