能否创建包含_id或_key的复合索引及_id+users持久化索引提速查询
能否创建包含_id或_key的复合索引
完全可以。ArangoDB 中_id、_key、_rev这类系统内置字段和普通自定义字段的索引规则完全一致,没有特殊限制,可以作为任意复合索引的组成部分。
能否为_id和users字段创建持久化索引加快 user key 查询
完全可以,且这个优化方案的收益非常高:
- ArangoDB 的持久化索引原生支持数组类型字段,创建包含
users的索引时,会自动为数组内的每一个用户 key 生成独立的索引条目,完美适配按单个 user key 检索的场景。 - 你可以根据常用查询逻辑调整索引字段顺序:
- 若查询逻辑为先按 user key 过滤、再返回对应文档的
_id,把users放在复合索引的前缀位置,符合索引最左匹配原则,查询效率更高,创建语句参考:
这种结构的索引属于覆盖索引,查询仅需要返回db.mycollection.ensureIndex({ type: "persistent", fields: ["users", "_id"] })_id时不需要读取原始文档,仅通过索引就能完成整个请求,性能会进一步提升。 - 若查询逻辑为先指定文档
_id、再判断某个 user 是否在users数组中,把_id放在索引前缀即可。
- 若查询逻辑为先按 user key 过滤、再返回对应文档的
内容的提问来源于stack exchange,提问作者Flajt
相关产品推荐
相关产品推荐

