Sql OrientDB-自动SB树索引中缺少值

Sql OrientDB-自动SB树索引中缺少值,sql,indexing,orientdb,Sql,Indexing,Orientdb,我正在使用OrientDB Enterprise Server v2.1.13,遇到了一些问题,我还没有找到解释和解决方案 似乎自动复合SB树索引工作不正常,不能索引新值(或者我误解了什么)。 A具有以下边缘类: CREATE CLASS ACTION EXTENDS E CLUSTERS 0 ABSTRACT CREATE PROPERTY ACTION.out LINK ALTER PROPERTY ACTION.out MANDATORY true ALTER PROPERTY

我正在使用OrientDB Enterprise Server v2.1.13,遇到了一些问题,我还没有找到解释和解决方案

似乎自动复合SB树索引工作不正常,不能索引新值(或者我误解了什么)。 A具有以下边缘类:

CREATE CLASS ACTION EXTENDS E CLUSTERS 0 ABSTRACT

CREATE PROPERTY ACTION.out LINK
  ALTER PROPERTY ACTION.out MANDATORY true
  ALTER PROPERTY ACTION.out NOTNULL true

CREATE PROPERTY ACTION.in LINK
  ALTER PROPERTY ACTION.in MANDATORY true
  ALTER PROPERTY ACTION.in NOTNULL true

CREATE PROPERTY ACTION.action STRING
  ALTER PROPERTY ACTION.action MANDATORY true

CREATE PROPERTY ACTION.status STRING
  ALTER PROPERTY ACTION.status DEFAULT 'NEW'

CREATE INDEX ACTION.out_action_in ON ACTION (out, action, in) UNIQUE

CREATE CLASS LINK EXTENDS ACTION CLUSTERS 8
  ALTER CLASS LINK CLUSTERSELECTION balanced

CREATE INDEX LINK.out_action_in ON LINK (out, action, in) UNIQUE
然后我们做插入:

CREATE EDGE LINK FROM #12:0 TO #30:0 SET action = 'a';
我们可以选择并查看它是否正确插入数据库:

orientdb {db=userdata}> SELECT FROM LINK WHERE action = 'a';

----+-----+------+------+-----+-----+------
#   |@RID |@CLASS|action|out  |in   |status
----+-----+------+------+-----+-----+------
0   |#36:0|LINK  |a     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------
现在,让我们创建SB Tree NOTUNIQUE索引(默认值):

现在我们创建一个新记录:

CREATE EDGE LINK FROM #12:0 TO #30:0 SET action = 'b';
orientdb {db=userdata}> SELECT FROM LINK

----+-----+------+------+-----+-----+------
#   |@RID |@CLASS|action|out  |in   |status
----+-----+------+------+-----+-----+------
0   |#36:0|LINK  |a     |#12:0|#30:0|NEW   
1   |#37:8|LINK  |b     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------
现在,我们尝试选择“a”和“b”值:

orientdb {db=userdata}> SELECT FROM LINK WHERE action = 'a'; 

----+-----+------+------+-----+-----+------
#   |@RID |@CLASS|action|out  |in   |status
----+-----+------+------+-----+-----+------
0   |#36:0|LINK  |a     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------

1 item(s) found. Query executed in 0.001 sec(s).

orientdb {db=userdata}> SELECT FROM LINK WHERE action = 'b';

0 item(s) found. Query executed in 0.001 sec(s).
解释:

Profiled command     '{fullySortedByIndex:false,compositeIndexUsed:1,involvedIndexes:[1],limit:-1,fetchingFromTargetElapsed:0,indexIsUsedInOrderBy:false,user:#5:0,elapsed:1.116033,resultType:collection,resultSize:0}' in 0,002000 sec(s):
{"@type":"d","@version":0,"fullySortedByIndex":false,"compositeIndexUsed":1,"involvedIndexes":["LINK.action_status"],"limit":-1,"fetchingFromTargetElapsed":0,"indexIsUsedInOrderBy":false,"user":"#5:0","elapsed":1.116033,"resultType":"collection","resultSize":0,"@fieldTypes":"compositeIndexUsed=l,involvedIndexes=e,fetchingFromTargetElapsed=l,user=x,elapsed=f"}
Profiled command '{documentReads:1,current:#36:1,documentAnalyzedCompatibleClass:1,recordReads:1,limit:-1,fetchingFromTargetElapsed:0,evaluated:1,user:#5:0,elapsed:0.666479,resultType:collection,resultSize:1}' in 0,002000 sec(s):
{"@type":"d","@version":0,"documentReads":1,"current":"#36:1","documentAnalyzedCompatibleClass":1,"recordReads":1,"limit":-1,"fetchingFromTargetElapsed":0,"evaluated":1,"user":"#5:0","elapsed":0.666479,"resultType":"collection","resultSize":1,"@fieldTypes":"documentReads=l,current=x,documentAnalyzedCompatibleClass=l,recordReads=l,fetchingFromTargetElapsed=l,evaluated=l,user=x,elapsed=f"}
但是--如果您使用IN()选择它--它就在那里:

orientdb {db=userdata}> SELECT FROM LINK WHERE action in ['b'];

----+-----+------+------+-----+-----+------
#   |@RID |@CLASS|action|out  |in   |status
----+-----+------+------+-----+-----+------
0   |#37:7|LINK  |b     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------

1 item(s) found. Query executed in 0.002 sec(s).
解释:

Profiled command     '{fullySortedByIndex:false,compositeIndexUsed:1,involvedIndexes:[1],limit:-1,fetchingFromTargetElapsed:0,indexIsUsedInOrderBy:false,user:#5:0,elapsed:1.116033,resultType:collection,resultSize:0}' in 0,002000 sec(s):
{"@type":"d","@version":0,"fullySortedByIndex":false,"compositeIndexUsed":1,"involvedIndexes":["LINK.action_status"],"limit":-1,"fetchingFromTargetElapsed":0,"indexIsUsedInOrderBy":false,"user":"#5:0","elapsed":1.116033,"resultType":"collection","resultSize":0,"@fieldTypes":"compositeIndexUsed=l,involvedIndexes=e,fetchingFromTargetElapsed=l,user=x,elapsed=f"}
Profiled command '{documentReads:1,current:#36:1,documentAnalyzedCompatibleClass:1,recordReads:1,limit:-1,fetchingFromTargetElapsed:0,evaluated:1,user:#5:0,elapsed:0.666479,resultType:collection,resultSize:1}' in 0,002000 sec(s):
{"@type":"d","@version":0,"documentReads":1,"current":"#36:1","documentAnalyzedCompatibleClass":1,"recordReads":1,"limit":-1,"fetchingFromTargetElapsed":0,"evaluated":1,"user":"#5:0","elapsed":0.666479,"resultType":"collection","resultSize":1,"@fieldTypes":"documentReads=l,current=x,documentAnalyzedCompatibleClass=l,recordReads=l,fetchingFromTargetElapsed=l,evaluated=l,user=x,elapsed=f"}

对这个问题有什么建议吗?

目前我的解决方法是使用散列索引,在我的情况下,它似乎可以正常工作

DROP INDEX LINK.action_status;
CREATE INDEX LINK.action_status ON LINK (action, status) NOTUNIQUE_HASH_INDEX;

orientdb {db=userdata}>     CREATE EDGE LINK FROM #12:0 TO #30:0 SET action = 'c';                   

Created edge '[LINK#38:4{action:c,out:#12:0,in:#30:0,status:NEW} v1]' in 0,003000 sec(s). 

orientdb {db=userdata}> SELECT FROM LINK;                                         

----+-----+------+------+-----+-----+------ 
#   |@RID |@CLASS|action|out  |in   |status 
----+-----+------+------+-----+-----+------ 
0   |#36:0|LINK  |a     |#12:0|#30:0|NEW   
1   |#37:8|LINK  |b     |#12:0|#30:0|NEW   
2   |#38:4|LINK  |c     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------ 

3 item(s) found. Query executed in 0.002 sec(s). 

orientdb {db=userdata}> SELECT FROM LINK WHERE action = 'c';                                         

----+-----+------+------+-----+-----+------ 
#   |@RID |@CLASS|action|out  |in   |status 
----+-----+------+------+-----+-----+------ 
0   |#38:4|LINK  |c     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------ 

1 item(s) found. Query executed in 0.002 sec(s). 

orientdb {db=userdata}> SELECT FROM LINK WHERE action in ['c']; 

----+-----+------+------+-----+-----+------ 
#   |@RID |@CLASS|action|out  |in   |status 
----+-----+------+------+-----+-----+------ 
0   |#38:4|LINK  |c     |#12:0|#30:0|NEW   
----+-----+------+------+-----+-----+------ 

1 item(s) found. Query executed in 0.002 sec(s). 

您好,您能否在GitHub上添加问题,SQL团队将分析您的查询?