OrientDB 使用子查询的结果来搜索索引
OrientDB use result of subquery to search index
我正在使用 OrientDb 2.1-rc4 作为文档数据库。我有一个 MyClass
class 被多线程应用程序频繁更新。为了提高性能,我从 State
class 中删除了 link 到 MyClass
,并添加了 link 和从 MyClass
到 [=19 的索引=] 为了获得 MyClass
的所有实例,我需要获得 State
的列表,然后查询索引。这个查询得到了我的州摆脱。
SELECT DISTINCT(roles.views.states.@rid)
FROM #12:1
returns
[["#14:0","#14:1"]]
此查询在索引中找到正确的 rids。
SELECT FROM index:MyClass.state
where key in [#14:0,#14:1]
当我将两个查询放在一起时。
SELECT FROM index:MWorkUnit.state
where key in (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
我收到以下错误。
java.lang.ClassCastException: com.orientechnologies.orient.core.sql.query.OSQLSynchQuery cannot be cast to java.util.List
如何让 OrientDB 将我的子查询视为删除列表?
编辑:
此查询在不使用索引时有效。
SELECT FROM MWorkUnit
where state IN (SELECT expand(roles.views.states).@rid FROM #12:1)
这似乎是针对索引查询的错误:未正确评估子查询。请问你能开个新问题吗?
此解决方法应该有效:
SELECT FROM index:MWorkUnit.state
LET $list = (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
where key in $list
我正在使用 OrientDb 2.1-rc4 作为文档数据库。我有一个 MyClass
class 被多线程应用程序频繁更新。为了提高性能,我从 State
class 中删除了 link 到 MyClass
,并添加了 link 和从 MyClass
到 [=19 的索引=] 为了获得 MyClass
的所有实例,我需要获得 State
的列表,然后查询索引。这个查询得到了我的州摆脱。
SELECT DISTINCT(roles.views.states.@rid)
FROM #12:1
returns
[["#14:0","#14:1"]]
此查询在索引中找到正确的 rids。
SELECT FROM index:MyClass.state
where key in [#14:0,#14:1]
当我将两个查询放在一起时。
SELECT FROM index:MWorkUnit.state
where key in (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
我收到以下错误。
java.lang.ClassCastException: com.orientechnologies.orient.core.sql.query.OSQLSynchQuery cannot be cast to java.util.List
如何让 OrientDB 将我的子查询视为删除列表?
编辑: 此查询在不使用索引时有效。
SELECT FROM MWorkUnit
where state IN (SELECT expand(roles.views.states).@rid FROM #12:1)
这似乎是针对索引查询的错误:未正确评估子查询。请问你能开个新问题吗?
此解决方法应该有效:
SELECT FROM index:MWorkUnit.state
LET $list = (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
where key in $list