我有一个非常大的数据集,接近5亿条边,几乎所有边都需要遍历。我试图通过分页处理IDS来并行化这些遍历。我的策略是尝试按ID(即MD5哈希)进行分页。我尝试了如下查询:
g.E().hasLabel('foo').has(id, TextP.startingWith('AAA'))
for page 1
g.E().hasLabel('foo').has(id, TextP.startingWith('AAB'))
用于第2页
但是每个查询似乎都在进行完整扫描,而不仅仅是一个子集。您如何建议我进行分页?
答案 0 :(得分:1)
我建议您对查询运行profile
步骤,以查看实际遍历的数量。
对我来说,在startingWith
上使用id
谓词似乎不是一种优化的解决方案,因为它可能使用哈希索引,而不是范围索引。
我会尝试在其他字符串属性上添加前缀,甚至添加一个随机的[1..n]'replica'属性并使用.has('replica', i)
进行过滤以获得最佳性能,尤其是在如此大的图形上。