GO语句遍历边时是否优先于边类型?多边类型查询结果顺序问询
NebulaGraph GO语句遍历逻辑解答
关于边的获取顺序
你这条查询里的10000条边会优先从edge_ref类型中获取,具体逻辑如下:
- 如果
edge_ref类型的边总数≥10000条,返回的所有结果全是edge_ref的边; - 如果
edge_ref的边不足10000条,会先取完所有edge_ref的边,再从edge_attack类型里补够剩余数量。
关于遍历优先级的规则
GO语句遍历多类型边时,优先级完全由OVER子句中边类型的书写顺序决定:排在前面的边类型会被优先遍历,只有当前面的边类型无法满足LIMIT要求时,才会去处理后面的边类型。不存在“GO语句本身比边类型优先级高”的说法,本质就是按你指定的边类型顺序来优先遍历。
举个实际场景:假设edge_ref只有8000条去重后的边,查询会先取这8000条,再从edge_attack里取2000条,凑够10000条返回。
内容的提问来源于stack exchange,提问作者fraidpaw
相关产品推荐
相关产品推荐

