OrientDB Traverse SQL 查询效率

OrientDB Traverse SQL query efficiency

抱歉,我是 Graphing DB 的新手!我在 OrientDB 中有以下基本结构:

我需要获取与给定 User 关联的所有 permissionpermission 总是包含在 Role 中,但 Role 可以直接属于 UserTeam。我没有将它添加到图像中,但 User > RoleTeam > Role 之间的边缘是 hasUser > Team之间是member.

我目前的做法是:

SELECT permission FROM (
  TRAVERSE any() FROM #23:0 WHILE $depth <=4
) WHERE @class='Role'

但是,我怀疑实现此目标的效率要高得多。

您可以使用命名边来代替 any() 进行遍历。

例如。如果 user -belongsTo-> teamuser,team -hasPermission-> permission 你可以像

这样写这个查询
SELECT FROM (
   TRAVERSE out('belongsTo', 'hasPermission') FROM #23:0 WHILE $depth <=2
) WHERE @class='Role'

这将避免遍历不需要的分支。