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

如何引导ArangoDB AQL规划器选择指定索引或创建组合索引?

ArangoDB索引选择优化与组合索引方案

一、强制查询规划器使用文档ID索引

你可以通过AQL的索引提示注释,直接指定查询使用目标索引。修改后的AQL语句如下:

FOR x IN collection /* use index */
FILTER time1 >= x.timestamp && time2 < x.timestamp && x.id IN [<list of ids>]
RETURN x

如果集合中有多个同类型索引,还可以指定具体索引名称来精准匹配:

FOR x IN collection /* use index idx_doc_id */
FILTER time1 >= x.timestamp && time2 < x.timestamp && x.id IN [<list of ids>]
RETURN x

注:这里的idx_doc_id需要替换成你实际创建的文档ID索引的名称。

二、创建组合索引彻底优化查询性能

针对这种同时按文档ID列表和时间范围筛选的场景,最理想的方案是创建包含id和timestamp的组合持久化索引,这样查询规划器可以直接利用组合索引完成双重过滤,完全避免线性扫描。创建索引的AQL语句如下:

CREATE INDEX idx_id_timestamp ON collection (id, timestamp)

组合索引的顺序很关键:把过滤基数更低(即能筛选掉更多数据)的字段id放在前面,再跟上timestamp,这样索引会先按文档ID列表快速缩小结果集,再在小范围内按时间范围筛选,性能比单独使用任何一个单字段索引都要高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:19:57