OR演算子を使用して、symbol、primaryidentifier、secondaryidentifier、およびnameというプロパティにインデックスを作成した後、582479個の遺伝子に対してクエリを実行しようとしています。 は、このクエリ:パフォーマンスが非常に悪いですOR演算子のパフォーマンスが悪い
PROFILE
MATCH(g:Gene) WHERE g.symbol="CG11566" OR
g.primaryidentifier="CG11566" OR
g.secondaryidentifier="CG11566" OR
g.name="CG11566"
RETURN g.id, g.primaryidentifier, g.secondaryidentifier, g.symbol, g.name
ORDER BY g.id;
、作成したインデックスが使用されていないが、3253ミリ秒
で唯一のラベルscan-> 2912399本の総デシベルヒットはUNIONを使用するクエリを変更:
PROFILE
MATCH(g:Gene) WHERE g.symbol='CG11566' return g.id
UNION MATCH(g:Gene) WHERE g.primaryidentifier='CG11566' return g.id
UNION MATCH(g:Gene) WHERE g.secondaryidentifier='CG11566' return g.id
UNION MATCH(g:Gene) WHERE g.name='CG11566' return g.id;
索引が使用されています。> 73 msで合計8個のヒットが使用されました。ずっといい。 UNIONを使用せずにクエリを実装する方法はありますか?
ありがとうございます。それは本当に残念です!そうでなければ、AND演算子は正しく動作します –