使用 $or 或 $in Cloudant 查询速度慢

Cloudant query slow speed using $or or $in

我有一个字段 "userid" 的索引设置。当我尝试使用 and $or 查询时,我得到了一个错误的请求。

query = cloudant.query.Query(db,selector={'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['userid'])

首先添加“_id”可以正常工作,但首先获取所有文档的时间太长。

query = cloudant.query.Query(db,selector={'_id':{'$gt':0},'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['userid'])

我在使用 $in 而不是 $or 时得到类似的结果。我缺少什么可以快速进行此查询?

为了它的价值,我创建了一个 "type": "json" Cloudant 查询索引,并按照 http://python-cloudant.readthedocs.io/en/latest/getting_started.html 的 python-cloudant 文档编写了一些简单的测试代码。这段代码对我有用:

import cloudant

client = cloudant.Cloudant("username", "password", account="account_name")
client.connect()
session = client.session()
db = client['testdb']

query1 = cloudant.query.Query(db,selector={'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['_id', 'userid'])
#query2 = cloudant.query.Query(db,selector={'_id':{'$gt':0},'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['_id', 'userid'])

for doc in query1.result:
    print doc

client.disconnect()

它returns:

{u'_id': u'266f9caae40012a04ce9223ccc67c8bd', u'userid': 35916}
{u'_id': u'5ff2cb156d16783492adb3eb8e2e0aec', u'userid': 11035}

我的观察:$or 和 $in 查询甚至抱怨找不到索引,即使在 _id 上查询并使用 _all_docs 索引也是如此。我认为这归结为数据库引擎内部的查询规划不是很好。我正在使用 CouchDB 2.0。