mcpField
S
surrealql-performance

surrealql-performance

github.com/surrealdb数据与数据库28427 次安装4 周前更新
代码仓库

关于 surrealql-performance

surrealql-performance 是优化 SurrealDB 查询的技能,涵盖记录键设计、索引选择与验证,以及为读取频繁的查询预计算数据。

主要功能

  1. 01记录 ID 与键设计
  2. 02索引选择及复合排序
  3. 03使用 EXPLAIN 检查索引
  4. 04计算字段与视图
  5. 05参数化查询建议

适用场景

  1. 01减少慢查询中的扫描
  2. 02为查找和范围扫描设计键
  3. 03检查查询是否使用预期索引
  4. 04避免重复计算读取频繁的派生值

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/surrealdb/agent-skills --skill surrealql-performance

安装后在 Claude Code 中输入/surrealql-performance确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
computed-fields.md
indexing.md
keys.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