我有一个应用程序流推特数据,并将其发送到两个Kafka主题。这些kafka主题由两台不同的机器读取,它们将数据发送到neo4j数据库(放在两台机器中的一台机器上)。
一些数据插入查询具有 MERGE
子句,这使得查询在数据增长时非常慢。现在,我正在努力减少查询时间。
在节点上添加多个索引(它们已经有了一个索引)以便每次都有较小的节点模式,这是一种好的做法吗 MERGE
是否执行?这有什么意义吗?下面是一个查询示例:
MERGE (t:Tweet{tweet_id:{tweet_id}})
SET t.text={text}, t.language={language},
t.created_at={created_at}, t.retweetcount={retweetcount},
t.likecount={likecount}, t.location={location}
查询计划:
1条答案
按热度按时间mnowg1ta1#
根据查询计划,您应该创建一个
UNIQUE CONSTRAINT
在球场上tweet_id
对于标签Tweet
:所以与其表演
NodeByLabelScan
加上Filter
,你会做一个NodeUniqueIndexSeek
女巫真的更好。此外,您对数据库所做的工作越少,性能越好:)
所以如果你只需要更新字段
favorite_count
&retweet_count
当节点已经存在时,应该使用sub命令ON CREATE SET
以及ON MATCH SET
的MERGE
这样地: