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"}
任意の提案ですか?
こんにちは、GitHubで問題を追加して、SQLチームがクエリを分析できますか? –