代码之家  ›  专栏  ›  技术社区  ›  sapphous

OrientDB中边缘计数的时间复杂度

  •  0
  • sapphous  · 技术社区  · 7 年前

    我想从OrientDB中的顶点检索给定类型的传入或传出边的总数。显而易见的方法是使用count()和inE(MyEdgeType)、outE(MyEdgeType)或bothE(MyEdgeType)构造查询。然而,我担心时间的复杂性;如果这个操作是O(N)而不是O(1),那么每次需要时,我最好将数字存储在数据库中,而不是使用count(),因为我预计有问题的边的数量会变得非常大。我搜索了文档,但它似乎没有列出OrientDB函数的时间复杂性。此外,我不确定是使用in/out/both还是inE/outE/bothE;我认为E版本会更快,但这取决于OrientDB在引擎盖下存储边缘的方式,这可能是错误的。

    计算给定类型到顶点或从顶点到顶点的传入/传出/两边的集合是一个恒定时间操作吗?如果不是,其时间复杂度是多少?为了提高效率,我需要同时使用inE/outE/bothE还是in/out/bothE?还是我完全错过了其他方法?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Lvca    7 年前

    在OrientDB中,这是O(1): inE()/outE()/bothE().size() 使用或不使用边缘标签作为参数。