关于 surrealql-performance
surrealql-performance 是优化 SurrealDB 查询的技能,涵盖记录键设计、索引选择与验证,以及为读取频繁的查询预计算数据。
主要功能
- 01记录 ID 与键设计
- 02索引选择及复合排序
- 03使用 EXPLAIN 检查索引
- 04计算字段与视图
- 05参数化查询建议
适用场景
- 01减少慢查询中的扫描
- 02为查找和范围扫描设计键
- 03检查查询是否使用预期索引
- 04避免重复计算读取频繁的派生值
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ surrealdb/ agent-skills --skill surrealql-performance安装后在 Claude Code 中输入/surrealql-performance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/computed-fields.mdindexing.mdkeys.md详细介绍
SurrealQL 性能
提升 SurrealDB 查询速度的技巧:合理设计记录 ID 和键以优化数据局部性,选择并验证合适的索引,以及使用计算字段和视图预先计算值,而不是在每次读取时重新计算。
面向 最新 稳定版 SurrealDB。请通过 https://surrealdb.com/docs 确认与版本相关的语法(记录范围、COMPUTED 字段、FULLTEXT 索引选项),并使用 surreal validate 验证示例。版本检测请参阅 surrealql 技能。
何时使用此技能
- 查询速度慢,或扫描的记录数超出预期
- 设计记录 ID,以支持高效查找和范围扫描
- 在标准索引、
UNIQUE索引、全文SEARCH索引或向量索引之间进行选择 - 确认索引是否确实被使用(
EXPLAIN) - 决定存储派生值,还是在读取时计算
主题概览
| 主题 | 参考 |
|---|---|
| 用于优化局部性和范围扫描的记录 ID 与键设计 | references/keys.md |
| 索引类型、复合索引顺序、验证索引使用情况、重建成本 | references/indexing.md |
| 计算字段、预计算视图、通过事件维护的值 | references/computed-fields.md |
核心规则
- 根据访问模式设计 ID。 记录 ID 按排序顺序存储。将选择性最高且适合范围查询的组件放在前面(例如
weather:['London', d'2025-02-13T05:00Z']),使相关记录相邻存放,并让范围查询避免全表扫描。参见 references/keys.md。 - 优先使用记录范围,而不是对 ID 使用
WHERE。SELECT * FROM person:1..1000会直接利用键排序;全表扫描后再筛选则不会。 - 为用于筛选、排序或联接的字段建立索引,但不要过度索引。 每个索引都会增加写入开销。复合索引字段应按选择性从高到低排列,并匹配查询的筛选和排序顺序。参见 references/indexing.md。
- 验证,不要想当然。 断定查询已优化之前,请运行
EXPLAIN(或EXPLAIN FULL),确认查询使用了预期的索引。 - 预先计算开销大且读取频繁的值。 使用计算字段、
DEFINE TABLE ... AS SELECT视图或DEFINE EVENT来维护派生数据,而不是每次查询都重新计算聚合值。参见 references/computed-fields.md。 - 使用绑定参数。 参数化查询更安全,还能让引擎重复使用查询计划。
评论
支持 Markdown