2016-04-06 8 views
0

私はOrientDB Enterprise Server v2.1.13で作業していますが、まだ説明と解決策が見つかりませんでした。OrientDB - 自動SBツリーインデックスに値がありません

自動合成SB-Treeインデックスが正しく機能せず、新しい値をインデックスに登録しない(または何かを誤解している)ようです。 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 INDEX LINK.action_status ON LINK (action, status) 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). 

EXPLAIN:

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"} 

しかし、IN()を使用してSELECTを選択すると、そこには:

10は、EXPLAIN:この問題の

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"} 

任意の提案ですか?

+0

こんにちは、GitHubで問題を追加して、SQLチームがクエリを分析できますか? –

答えて

0

現在、私の回避策は、私の場合は正常に動作するように見えるハッシュインデックスを使用することです。

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). 
関連する問題