OrientDB查询太慢
OrientDB v2.1.1, 我有两个类:NOrder和NPassenger,关系1:n,所以NOrder有一个名为“乘客”的文件,其类型是linklist 我有两个字段(NOrder order_id,NPassenger.Name)索引已建立 诺德公爵伯爵是三百万 我解释这些疑问:OrientDB查询太慢,orientdb,orientdb-2.1,Orientdb,Orientdb 2.1,OrientDB v2.1.1, 我有两个类:NOrder和NPassenger,关系1:n,所以NOrder有一个名为“乘客”的文件,其类型是linklist 我有两个字段(NOrder order_id,NPassenger.Name)索引已建立 诺德公爵伯爵是三百万 我解释这些疑问: 1)select from NOrder where passengers contains(name = 'xxx') why this query not involved index . 2)
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
此查询花费120秒
谢谢我尝试过这种结构
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])
问题1
explain select from NOrder where passengers contains(name = 'xxx')
问题2
explain select from NOrder where 'xxx' in passengers.name
这两个查询都不使用索引,因为类目标是NOrder
更新
现在我有50002诺德和50002纳森格。
如果我执行查询
explain select from NOrder where passengers contains(姓名='xxx')
及
我明白了
这是因为没有使用name字段上的索引(因为目标类是Norder类),然后对Norder类的所有50002条记录进行搜索
如果我使用查询
explain select from NPassenger where name = "xxx"
之所以使用索引NPassenger.name,是因为目标类是NPassenger您能否发布“explain select from NOrder where'xxx'in passengers.name”的结果?如果数据量太小,我解释这些查询,有以下提示:[“查询”从NOrder中选择,其中乘客中的“xxx”。姓名“获取了50000多条记录:为了加快执行速度,创建索引或将查询更改为使用现有索引”],为什么查询速度如此缓慢?
explain select from NPassenger where name = "xxx"