gpt4 book ai didi

neo4j - OR 运算符的性能不佳

转载 作者:行者123 更新时间:2023-12-04 15:32:13 26 4
gpt4 key购买 nike

在对以下属性创建索引后,我尝试使用 OR 运算符对 582479 个基因运行查询:符号、主要标识符、辅助标识符和名称。
这是查询:

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;

性能很差,创建的索引没有使用,只有标签扫描-> 2912399 3253 ms 内的总db hits

将查询更改为使用 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 毫秒内总共 8 次数据库命中。好多了。
在不使用 UNION 的情况下实现查询的更好方法是什么?

最佳答案

您现在无能为力,Cypher 的计划员必须变得更聪明

UNION 是目前最好的解决方案。

关于neo4j - OR 运算符的性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37418207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com