neo4j - Neo4j 浏览器崩溃灰屏
问题描述
MATCH (a:Doss)
MATCH (b:Doss)
WHERE a.Num=b.Num
return a,b
这需要很长时间,然后没有结果,只是浏览器因灰屏而崩溃。注意:在这个数据库中,我有 6M 个节点。
解决方案
您需要一个关于 :Doss(Num) 的索引,否则这将无法在合理的时间内完成。
关键是大多数 Cypher 操作是按行执行的。因此,根据第一个 MATCH 的每个结果执行第二个 MATCH。
如果您没有索引,那么这可能会为 执行 NodeByLabelScan a
,然后为每个a
节点执行另一个 NodeByLabelScan并过滤以查找匹配项b
。
基本上,您将执行总共 6M + 1 个标签扫描,并过滤 6M * 6M 行,这不是一个好主意。
如果添加索引,那么您将只执行一次 NodeByLabelScan,然后 6M 索引试图在每行中查找b
与 num 相同的所有节点a
。
您应该能够在查询上运行 EXPLAIN 以确认计划者希望如何执行此操作。
推荐阅读
- java - Jackson ObjectMapper 将字符串中的名称值序列化为 JSON
- angular - ionViewDidEnter 未在页面刷新时调用
- python - 从以下网站的链接中提取html链接
- authentication - ActiveAdmin::Devise::SessionsController#create 中的 ActionController::InvalidAuthenticityToken
- php - PHP循环中的大量内存使用:找到了一个调整,但正在寻找更多
- javascript - Uncaught SyntaxError: Unexpected token) at eval (
) - javascript - 删除主对象后扩展接口是否获得GC?
- excel - Excel在公式中返回单元格样式
- swift - RealmSwift RealmCollectionChange tableView 崩溃
- c - 在 OSX 上安装 QEMU Emulator 时进行检查会产生 ERROR (GLib-ERROR **: 17:50:29.132)