[英]OrientDB Traverse SQL query efficiency
抱歉,我是 Graphing DB 的新手! 我在OrientDB 中有以下基本結構:
我需要獲得與給定User
相關的所有permission
。 permission
始終包含在Role
但Role
可以直接屬於User
或Team
。 我沒有將它添加到圖像中,但User > Role
和Team > Role
之間的邊緣has
. 而User > Team
之間是member
。
我目前的做法是:
SELECT permission FROM (
TRAVERSE any() FROM #23:0 WHILE $depth <=4
) WHERE @class='Role'
但是,我懷疑有一個更有效的方法來實現這一點。
您可以使用命名邊,而不是使用any()
進行遍歷。
例如。 如果user -belongsTo-> team
和user,team -hasPermission-> permission
您可以像這樣編寫此查詢
SELECT FROM (
TRAVERSE out('belongsTo', 'hasPermission') FROM #23:0 WHILE $depth <=2
) WHERE @class='Role'
這將避免遍歷不需要的分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.