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从默认WHERE类型='位置'ORDER BY“ +req.params.filter +(req.query.descending?'DESC':'')+“ LIMIT” +限制+“偏移” +跳过
我的存储桶中的位置文档为
{
"_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
子句产生这么多延迟吗?
我相信,couchbase并不是为处理可以由任何字段排序的查询而构建的。由于在CB中订购是一项昂贵的操作,因此始终建议根据排序字段创建索引。同样,如果索引是按升序构建的,则不能将其用于降序,反之亦然。使用CB的最佳选择是,如果可行,以升序和降序创建所有可能的索引。
我还建议您考虑弹性搜索是否更适合您的动态搜索用例。