- nebula 版本:V1.2.0
- 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
- 硬件信息
- 磁盘( 推荐使用 SSD):SSD
- CPU、内存信息:32核64线程,128GB,6台
- 问题的具体描述:
运行:
GO FROM 106200039614 OVER search_down YIELD search_down._rank AS rank, search_down._dst AS dst | ORDER BY rank DESC | LIMIT 5;
结果如下:
rank dst
4763303 2222071
192395 3610816
72539 3420202
65746 30244071
54107 3387778
因为考虑到边太多,使用 order by 效率太低。决定使用 稠密点处理中的直接截断法:
UPDATE CONFIGS storage:enable_reservoir_sampling = false;
UPDATE CONFIGS storage:max_edge_returned_per_vertex = 5;
GO FROM 106200039614 OVER search_down YIELD search_down._rank AS rank, search_down._dst AS dst;
结果如下:
rank dst
15374 30281810
5397 3668206
7706 3382741
7717 3562522
24104 3729665
查出来的5条边的 rank 值既不是最大的,也不是最小的。
(最小5条边rank值如下:
rank dst
4402 3659273
5211 3584563
5261 336968
5397 3668206
5774 30042884)
对于超级节点,如果我只希望查询到 权重最高 的TopN 条边,我该怎么做呢?order by 效率很低,尤其是多跳的时候,有没有效率更高的方法?