如何从Orient中的索引收集字段快速获取不同的值?

时间:2016-03-24 05:21:56

标签: indexing orientdb

是否有一种有效的方法可以从索引的多值字段(集合或列表)中获取不同的值?

到目前为止,我发现:

<div ng-app="MyApp">
 <div layout="column" ng-controller="MainCtrl as main" ng-cloak>  
 <md-sidenav md-component-id="left" class="md-sidenav-left" md-swipe-left="toggleSidenav()" >
  <md-menu-item>   
   menu  
  </md-menu-item>
</md-sidenav>

<md-content flex>   
<md-toolbar>      
    <div class="md-toolbar-tools" >          
        <md-button class="md-icon-button" aria-label="Menu" ng-    click="toggleSidenav()">
            <md-icon>menu</md-icon>
        </md-button>
       <span flex>
           <a class="md-title" href="">H3 TiP</a>
           <span class="report-subtitle md-subhead">Sample Report</span>
       </span>          
    </div>     
</md-toolbar>

<md-content layout="column" layout-padding flex> content 
</md-content>  
</md-content></div></div>

有效,但仅适用于简单(单值)字段,仅适用于NOTUNIQUE类型的索引(对于NOTUNIQUE_HASH_INDEX,它会抛出UOE)

它也会对多值字段执行,但结果与任何有意义的内容都不相似。

我试过

select distinct(key) from index:V.indexedField

但显然它没有利用索引,迭代所有顶点并为更大的数据库炸掉内存。

也许从Java API可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我尝试使用此数据集:

enter image description here

这些是我的索引:

enter image description here

我使用了OrientDB 2.1.13并且所有索引(4次尝试)都正常工作。我附上执行的查询。

  1. explain select from v where name = 'a'UNIQUE SB-TREE
  2. enter image description here

    1. explain select from v where name2 = 'e'NOTUNIQUE SB-TREE
    2. enter image description here

      1. explain select from v where name3 = 'l'UNIQUE_HASH_INDEX
      2. enter image description here

        1. explain select from v where name4 = 'o'NOTUNIQUE_HASH_INDEX
        2. enter image description here

          可能你的问题是WHERE子句(它检查并匹配索引)的错过使用,因为没有它,就会发生一个简单的类扫描。

          希望有所帮助