You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为给定的Couchbase查询创建合适的索引?

Couchbase 查询的索引创建方案

原查询逻辑分析

你的查询先通过子查询获取指定用户(匹配小写userEmail)的GROUP_SHARING类型报告的reportGuid列表,再筛选主表中details.guid匹配该列表的报告文档。以下是针对性的索引创建建议:


1. 针对子查询的覆盖索引

子查询需要过滤eventType = 'GROUP_SHARING'且匹配小写userEmail的文档,并提取reportGuid。创建覆盖索引可直接从索引返回数据,无需回表:

CREATE INDEX idx_eventtype_loweruseremail_reportguid ON report(eventType, LOWER(userEmail)) INCLUDE (reportGuid);

2. 针对主查询过滤条件的索引

主查询需要匹配details.guid与子查询返回的reportGuid,创建该字段的索引可快速定位符合条件的文档:

CREATE INDEX idx_details_guid ON report(details.guid);

可选:优化查询语句+对应索引

原查询的子查询写法可以改用JOIN优化性能,改写后的查询如下:

const query = `SELECT r.*, r.itemName as name, r.createdBy.timestamp AS modifiedOn
               FROM report r
               JOIN report rg ON rg.reportGuid = r.details.guid
               WHERE rg.eventType = 'GROUP_SHARING' AND LOWER(rg.userEmail) = LOWER("${email}")`;

针对改写后的JOIN查询,可创建组合索引覆盖过滤与关联条件:

CREATE INDEX idx_rg_eventtype_loweruseremail_reportguid ON report(eventType, LOWER(userEmail), reportGuid);

内容的提问来源于stack exchange,提问作者Harmattan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:57:30