我正在解析比特币区块链,整个想法是建立一个看起来像这样的地址图(地址) - [兑换] - >(tx) - [发送] - >(地址)所以我可以看到比特币地址彼此相关。问题是执行时间,有时只导入一个事务需要几分钟。此外,其中一些查询太长,如数千行,并且根本不会执行。我已经阅读了一些关于如何优化匹配查询的文章,但几乎没有发现创建和合并。我在这里看到一些人建议使用UNWIND并尽可能多地发送数据作为参数,以缩短查询时间,但我不知道如何在我的查询中实现这一点。
以下是我的查询示例:http://pastebin.com/9S0kLNey
答案 0 :(得分:1)
您可以尝试使用以下简单查询,传递字符串parameters“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"},
...
]
此查询应比原始样本运行得更快,但我不知道速度有多快。