简体   繁体   English

OrientDB查询太慢

[英]OrientDB query too slow

OrientDB v2.1.1, I have tow class: NOrder and NPassenger, relationship 1 : n, so NOrder has a filed named "passengers",whose type is linklist. OrientDB v2.1.1,我有两个类:NOrder和NPassenger,关系1:n,因此NOrder有一个名为“ passengers”的文件,其类型为链接列表。

I have two fields (NOrder order_id, NPassenger. Name) index is established 我有两个字段(NOrder order_id,NPassenger。Name)索引已建立

NOrder ducuments count is 3 millon . NOrder文件数量为3密耳。

I explain these query: 我解释了这些查询:

 1)select from NOrder where passengers contains(name = 'xxx')
  why this query not involved index .

 2)select from NOrder where 'xxx' in passengers.name
  this query involved indexeses 

this query cost 120sec . 此查询花费120秒。

thanks 谢谢

I have tried with this structure 我已经尝试过这种结构

create class NPassenger
create property NPassenger.name String
create index NPassenger.name on NPassenger (name) NOTUNIQUE_HASH_INDEX

create class NOrder 
create property NOrder.order_id String
create property NOrder.passengers linklist NPassenger
create index NOrder.order_id on NOrder (order_id) UNIQUE_HASH_INDEX

insert into NPassenger(name) values ("xxx")  // 12:0
insert into NPassenger(name) values ("Alessandro")  //12:1

insert into NOrder(order_id,passengers) values ("order 1",[12:0])
insert into NOrder(order_id,passengers) values ("order 2",[12:1])

Query 1 查询1

explain select from NOrder where passengers contains(name = 'xxx')

在此处输入图片说明

Query 2 查询2

explain select from NOrder where 'xxx' in passengers.name

在此处输入图片说明

None of the two queries use the index because the class target is NOrder. 这两个查询都不使用索引,因为类目标是NOrder。

UPDATE UPDATE

Now I have 50002 NOrder and 50002 NPassenger. 现在我有50002 NOrder和50002 NPassenger。 If I execute the queries 如果我执行查询

explain select from NOrder where passengers contains(name = 'xxx')

and

explain select from NOrder where 'xxx' IN passengers.name'

I get 我懂了

在此处输入图片说明

this is because no index on the name field is used (because the target class is the Norder class) and then the search is done on all 50002 records of the class Norder. 这是因为没有使用名称字段上的索引(因为目标类是Norder类),然后才对Norder类的所有50002条记录进行搜索。

If I use the query 如果我使用查询

explain select from NPassenger where name = "xxx"

在此处输入图片说明

the index NPassenger.name is used because the target class is NPassenger 使用索引NPassenger.name是因为目标类是NPassenger

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM