关于Couchbase中的N1QL查询,我有两个问题。
1:假设我有一个用户表,其中userid是文档密钥,然后我 触发这样的查询
从mybucket使用键中选择* [“ 1234”];
2:假设userid不是文档密钥,然后在userid上创建二级索引
从mybucket中选择*,其中userid = 1234;
所以我的问题是,哪个查询执行得更快?
第二个问题是,
假设我有一个用户表,其中userid是文档密钥
从mybucket中选择*,其中meta()。id =“ 1234”;
此查询无法运行,并显示“键空间上没有可用的索引”。 它是一个文档密钥,应像“使用密钥”一样运行。我试图在userid上创建二级索引,但是它说无法创建索引,因为此字段不是文档的一部分(显然,它是文档密钥)
答案 0 :(得分:4)
第一个查询将运行最快。通过直接在USE KEYS子句中命名特定键,Couchbase可以在单个请求中直接检索记录。第二种使用索引的方法会稍微慢一些,因为系统将首先必须向索引发出请求以获取文档ID,然后再检索记录本身。第二种方法仍将非常非常快,但不如第一种快。
是的,根据您使用的版本,我们可能没有完全优化第三种情况。如果可以,请使用USE KEY。