建议和反馈

请填写你的反馈内容

问答 > 比特币 > 问答详情
求助中

优化neo4j cypher CREATE和MERGE查询问题,需要帮助10LK

我正在解析比特币区块链,整个想法是建立一个看起来像这样的地址图(地址) - [兑换] - >(tx) - [发送] - >(地址)所以我可以看到比特币地址是如何与彼此。问题是执行时间,有时只导入一个事务需要几分钟。此外,其中一些查询太长,如数千行,并且根本不会执行。我已经阅读了一些关于如何优化匹配查询的文章,但几乎没有发现创建和合并。我在这里看到一些人建议使用UNWIND并尽可能多地发送数据作为参数,以使查询更短,但我不知道如何在我的查询中实现这一点。

以下是我的查询示例:http//pastebin.com/9S0kLNey


2019-08-13
0
请先登陆或注册

witcher2019-08-13

您可以尝试使用以下简单查询,传递字符串参数 “hash”,“time”,“block”和“confs”; 和一个名为“data”的集合参数:

CREATE (tx:Tx {hash: {hash}, time: {time}, block: {block}, confirmations: {confs}})
FOREACH(x IN {data} |
  MERGE (addr:Address {address: x.a})
  CREATE (addr)-[:REDEEMED {value: x.v}]->(tx)
);

用于字符串参数的值应该是显而易见的。

每个“数据”元素将是包含地址(“a”)和值(“v”)的映射。例如,以下是“数据”集合的片段,它与示例查询中的数据相对应:

[
  {a: "18oBAMgFaeFcZ5bziaYpUpsNCJ7G8EgH8g", v: "240"},
  {a: "192W3HUVDyrp6ewvisHSijcx9f5ZoarrwX", v: "410"},
  {a: "18tnEFy4usZvpMZLnjBFPjbmLKEzqPz958", v: "16.88"},
  ...
]

此查询应该比原始样本运行得更快,但我不知道速度有多快。


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 0
  • 5
  • 5
  • 0
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励