Best practice on n1ql index?

If the query always touches the same attributes in the condition and result, you should use:

CREATE INDEX idx ON mybucket(keyC1,keyC2,...,keyCn,keyR1,keyR2,...keyRn);

With Couchbase 4.1, this gives you a covering index. You should verify using EXPLAIN and look for expressions of the form “cover(expr)” in the output.