如何使用 RAW MAX 进行 CouchBase 子查询,执行速度更快

How to make CouchBase sub-query with RAW MAX , execution faster

我有这个查询:

"SELECT meta(d).id as ID, meta(d).cas as CAS, d.* "
  +"FROM (SELECT RAW MAX([t.eventTimestamp, META(t).id])[1] "
      +"FROM `xyz` as t "
      +"WHERE t.`docType` = '" +docType.toString() + "' "
      +predicates
      +"GROUP BY t.id "
      +") as q "
+"JOIN `xyz` as d ON KEYS q"
+"ORDER BY d.eventTimestamp + "ASC " : "DESC "
+"LIMIT $limit OFFSET $offset" 

我如何修改上面的查询,特别是这部分:d.* 以便查询执行时间更快,而不破坏原始查询逻辑。 或者是否有另一种方法可以修改此查询以加快执行速度。

尝试在子查询中使用 LIMIT。

CREATE INDEX ix1 ON xyz(id, timestamp DESC);

SELECT meta(d).id as ID, meta(d).cas as CAS, d.*
FROM (SELECT RAW m.id
      FROM `xyz` as t
      WHERE t.id is NOT NULL
      GROUP BY t.id
      LETTING m = MAX([t.timestamp, {t.timestamp, META(t).id}])[1]
      ORDER BY m.timestamp DESC LIMIT $limit) as q 
JOIN `xyz` as d ON KEYS q
ORDERBY d.timestamp;