如何使用 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;
我有这个查询:
"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;