Couchbase N1ql 查询

Couchbase N1ql queries

我有两个关于 Couchbase 中 N1QL 查询的问题。

1: 假设我有用户 table,其中 userid 是文档密钥,然后我 发出这样的查询

select * 来自 mybucket 使用 keys["1234"];

2:假设 userid 不是文档键,然后我在 userid

上创建二级索引

select * 来自 mybucket where userid=1234;

所以我的问题是,哪个查询执行得更快?

第二个问题是,

假设我有用户 table,其中用户 ID 是文档密钥

select * 来自 mybucket where meta().id="1234";

这个查询没有运行而给我"No index available on keyspace"。 它是一个文档密钥,它应该 运行 像 "use keys"。我试图在 userid 上创建二级索引,但它说无法创建索引,因为该字段不是文档的一部分(显然,它是文档键)

第一个查询 运行 最快。直接在 USE KEYS 子句中命名特定键让 Couchbase 可以在单个请求中直接检索记录。第二种方法,使用索引,会稍微慢一些,因为系统首先必须向索引发出请求以获取文档 ID,然后再检索记录本身。第二种方法仍然非常非常快,但不如第一种方法快。

是的,根据您使用的版本,我们可能不会完全优化第三种情况。如果可以,请使用 USE KEYS。