Couchbase N1ql queries



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

1:假设我有一个用户表,其中userid是文档键,然后I激发类似的查询

从mybucket使用键["1234"]中选择*

2:假设userid不是文档密钥,然后我在userid 上创建一个二级索引

从mybucket中选择*,其中userid=1234

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

第二个问题是,

假设我有一个用户表,其中userid是文档密钥

从mybucket中选择*where meta((.id="1234">

此查询未运行,并显示"密钥空间上没有可用的索引"。它是一个文档密钥,应该像"使用密钥"一样运行。我试图在userid上创建一个二级索引,但它说不能创建索引,因为这个字段不是文档的一部分(显然,它是文档密钥(

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

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

最新更新