稳定版本中的Couchbase 4“ORDER BY”性能

时间:2015-12-17 10:20:40

标签: couchbase n1ql

DUPLICATE: Couchbase 4 beta “ORDER BY” performance

与问题标题显示一样,对于使用Couchbase 4(N1QL)ORDER BY子句的一次调用,我面临着巨大的响应延迟,如13s。如果我不使用ORDER BY条款,那么每件事都可以。

我的主要索引是

Definition: CREATE PRIMARY INDEX `#primary` ON `default` USING GSI

和二级索引是

Definition: CREATE INDEX `index_location_name` ON `default`(`name`) USING GSI

N1QL查询

req.params.filter可以是位置文档中的任何键。

  

SELECT _id AS id FROM default WHERE type =' location'订购" +   req.params.filter +(req.query.descending?' DESC':'')+"限制" +   限制+" OFFSET" +跳过

我的Bucket中的位置文档是

{
  "_id": "location::370794",
  "name": "Kenai Riverside Fishing",
  "avgRating": 0,
  "city": "Cooper Landing",
  "state": "Alaska",
  "country": "USA",
  "zipCode": "99572",
  "created": "2013-07-10T17:30:00.000Z",
  "lastModified": "2015-02-13T12:34:36.923Z",
  "type": "location",
}

任何人都可以说出为什么ORDER BY条款会造成如此大的延迟?

1 个答案:

答案 0 :(得分:0)

我认为,couchbase并非用于处理可以由任何字段排序的查询。由于在CB中订购是一项昂贵的操作,因此始终建议根据排序字段创建索引。同样,如果索引是按升序构建的,则不能将其用于降序,反之亦然。使用CB的最佳选择是,在可行的情况下,以升序和降序创建所有可能的索引。

我还建议您考虑Elasticsearch是否更适合动态搜索用例。