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。
我有两个关于 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。