Index Access Pattern

SKILL待分类
待分类 未标注权限 许可证不明确

根据真实查询场景设计索引和访问路径时使用。适用于索引设计、读写权衡、分页排序、唯一索引和性能评审。融合 B-tree / Hash / GIN / BRIN 选型 + 复合索引顺序 + 覆盖索引 + 部分索引。

一句话选型结论

按资料字段整理

Index Access Pattern是待分类类的 Agent Skill,安装方式:GitHub 仓库,权限级别未标注,许可证不明确,没有现成安装命令,需按说明手动放置 SKILL.md。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类待分类 安装方式GitHub 仓库 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 ai-fullstack-delivery-workflow
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

GitHub 仓库
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    按安装说明或仓库 README,把 SKILL.md 放到客户端的 skills 目录(一般一个技能一个文件夹)。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

待分类
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方zhaoxuya520仓库 ai-fullstack-delivery-workflow · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式GitHub 仓库安装包 zhaoxuya520/ai-fullstack-delivery-workflow
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 2026-05-19
正文体量9.7 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
探索新能力

先试一类新技能能做什么。

当通用助手

让模型按说明书处理常见任务。

补齐模型缺的技能

给模型补上它原本没有的做法。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 基础信息齐全,可以先按说明装一个试试。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有现成安装命令,要按安装说明或仓库 README 手动放置。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在待分类场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Index Access Pattern当前 未标注权限 GitHub 仓库 未标注 未标注 无
着色页 联网访问 GitHub 仓库 1.4 万 Codex、Claude、Cursor 有
获取焦点模式 未标注权限 GitHub 仓库 1.1 万 Codex、Claude、Cursor 有
Nano PDF 文档 只读 GitHub 仓库 6,823 Codex、Claude、Cursor 有
Civil Servant 未标注权限 GitHub 仓库 — 未标注 无
07 Project Handoff 未标注权限 GitHub 仓库 — 未标注 无

SKILL.md 全文

9.7 KB
模型实际读到的说明书原文,来自技能仓库

索引与访问模式(Index & Access Pattern)

参考来源:Markus Winand《Use The Index, Luke!》、PostgreSQL Indexes 官方文档、High Performance MySQL(O'Reilly)、Stripe / GitHub 索引实战。

适用场景

  • 新表上线前设计索引
  • 根据 API 列表页、筛选、排序、搜索设计访问路径
  • 判断复合索引字段顺序
  • 评估唯一索引、覆盖索引、局部索引、前缀索引
  • 排查索引缺失或过度索引
  • 大表索引重建 / 在线建索引

核心原则

1. 索引来自真实访问模式,不来自字段清单
   先列查询场景,再决定索引

2. 索引不是越多越好
   每加一个索引:
   - 写入慢 5%~30%
   - 占空间(约表大小 30%~100%)
   - 维护成本(重建 / 迁移)

3. 复合索引顺序:等值 → 范围 → 排序
   遵循 ESR(Equality, Sort, Range)

4. 覆盖索引省一次表查
   把高频查询字段都放进 INCLUDE

5. 部分索引省空间
   `WHERE deleted_at IS NULL` 的查询用部分索引

6. 不为低选择性字段单独建索引
   性别、布尔、状态值少 → 单独建索引几乎无用

7. 唯一约束 = 唯一索引(自动)
   不要重复建

8. 高并发写入慎用 UUID v4 主键
   B-tree 写放大严重,用 ULID / UUID v7

索引类型对比

B-tree(默认 / 最常用)

CREATE INDEX idx_orders_user_id ON orders(user_id);

适合:
- 等值(=)
- 范围(<, >, BETWEEN)
- 排序(ORDER BY)
- 前缀匹配(LIKE 'abc%')

不适合:
- 后缀匹配(LIKE '%abc')→ 改用 GIN trigram
- 全文搜索 → 用 GIN tsvector

Hash(PostgreSQL 10+)

CREATE INDEX idx_users_email_hash ON users USING hash(email);

适合:
- 仅等值查找
- 大字段(hash 后只占 4~8 字节)

不适合:
- 范围查询
- 排序

GIN(倒排索引,PG 专用)

-- 数组
CREATE INDEX idx_post_tags ON posts USING gin(tags);
SELECT * FROM posts WHERE tags @&gt; ARRAY[&#x27;rust&#x27;];

-- JSON
CREATE INDEX idx_metadata ON orders USING gin(metadata);
SELECT * FROM orders WHERE metadata @&gt; &#x27;{&quot;source&quot;: &quot;mobile&quot;}&#x27;;

-- 全文搜索
CREATE INDEX idx_post_search ON posts USING gin(to_tsvector(&#x27;english&#x27;, body));
SELECT * FROM posts WHERE to_tsvector(&#x27;english&#x27;, body) @@ plainto_tsquery(&#x27;rust&#x27;);

适合:
- 数组 / JSON 字段
- 全文搜索
- 多值字段

BRIN(块范围索引,PG)

CREATE INDEX idx_logs_created_at ON logs USING brin(created_at);

适合:
- 时间序列数据(自然有序)
- 超大表(占空间极小)
- 范围扫描

不适合:
- 随机访问

空间索引(GiST)

CREATE INDEX idx_locations_geom ON locations USING gist(geom);

适合:
- 地理位置(PostGIS)
- 范围查询(点在多边形内)

ESR 复合索引顺序原则

原则:Equality → Sort → Range

示例:
  SELECT * FROM orders
  WHERE tenant_id = ? AND status = ? AND created_at &gt; ?
  ORDER BY created_at DESC
  LIMIT 20;

错误索引:
  CREATE INDEX ON orders(created_at, tenant_id, status);
  → 范围放前面,过滤时还要扫大量行

正确索引:
  CREATE INDEX ON orders(tenant_id, status, created_at DESC);
  ↑等值        ↑等值     ↑排序+范围

查询-索引映射模板

查询场景 过滤条件 排序 分页 频率 建议索引 风险
列表查询 tenant_id, status created_at desc cursor 高 (tenant_id, status, created_at DESC) 写入慢
详情查询 id - - 极高 主键自带 -
搜索 name LIKE '%xxx%' - - 中 gin(name gin_trgm_ops) 占空间
时间范围 created_at > '...' created_at - 低 (created_at) 或 BRIN -
关联查询 user_id - - 高 (user_id) 必加 -

高级索引技巧

覆盖索引(INCLUDE)

-- 查询:SELECT id, status, total FROM orders WHERE user_id = ?
-- 普通索引:还要回表查 status, total
-- 覆盖索引:包含所有需要的字段,避免回表

CREATE INDEX idx_orders_user_covering
  ON orders(user_id) INCLUDE (status, total);

部分索引(Partial Index)

-- 只有 5% 的订单是 pending,但查询 99% 找的就是 pending
CREATE INDEX idx_orders_pending
  ON orders(created_at)
  WHERE status = &#x27;pending&#x27;;

-- 软删除常用
CREATE UNIQUE INDEX uq_users_email
  ON users(email)
  WHERE deleted_at IS NULL;

表达式索引(Expression Index)

-- 大小写不敏感搜索
CREATE INDEX idx_users_email_lower ON users(LOWER(email));
SELECT * FROM users WHERE LOWER(email) = LOWER(?);

-- JSON 字段索引
CREATE INDEX idx_orders_status ON orders((metadata-&gt;&gt;&#x27;status&#x27;));

反向索引(Descending)

-- 时间倒序分页
CREATE INDEX idx_orders_created_desc ON orders(created_at DESC);

部分覆盖索引(PG 专属神器)

-- 只对活跃用户的查询建索引
CREATE INDEX idx_users_active_name
  ON users(name)
  INCLUDE (email, avatar_url)
  WHERE is_active = true;

标准流程

1. 收集读写路径和频率
   - API 端点 → SQL 模式
   - 查询频率 / 写入频率
   ↓
2. 标注每个查询的:
   - 过滤条件(等值 / 范围 / IN / LIKE)
   - 排序字段和方向
   - 分页方式(offset / cursor)
   - join 关系
   - SELECT 字段(用于覆盖索引)
   ↓
3. 识别唯一性约束和业务去重需求
   ↓
4. 设计候选索引
   - 主键 / 外键 自带或必加
   - 高频查询的复合索引(ESR 原则)
   - 唯一约束 → 唯一索引
   - 部分 / 覆盖 / 表达式索引(看情况)
   ↓
5. 评估写入成本、存储成本和迁移成本
   - 单表索引数 ≤ 5(经验值)
   - 总索引大小 ≤ 表大小(经验值)
   ↓
6. 输出索引清单和验证方式
   - EXPLAIN 验证用上索引
   - 大表用 CREATE INDEX CONCURRENTLY(PG)

索引选择性分析

-- 选择性 = distinct 值数 / 总行数
-- 越接近 1 越好(每个索引值定位行少)

SELECT
  COUNT(DISTINCT status) * 1.0 / COUNT(*) AS selectivity_status,  -- 0.0001(差)
  COUNT(DISTINCT user_id) * 1.0 / COUNT(*) AS selectivity_user_id,  -- 0.5(中)
  COUNT(DISTINCT id) * 1.0 / COUNT(*) AS selectivity_id  -- 1(满)
FROM orders;

-- 选择性 &lt; 0.001 一般不单独建索引
-- 但放复合索引前面 + 等值过滤 OK

索引维护

找无用索引

-- PostgreSQL:找从未使用的索引
SELECT
  schemaname, tablename, indexname,
  idx_scan, pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
  AND indexname NOT LIKE &#x27;%_pkey&#x27;
ORDER BY pg_relation_size(indexrelid) DESC;

找重复索引

-- 同一字段被多个索引覆盖,可能有冗余
SELECT
  indrelid::regclass AS table_name,
  array_agg(indexrelid::regclass) AS indexes,
  indkey
FROM pg_index
GROUP BY indrelid, indkey
HAVING COUNT(*) &gt; 1;

在线建索引(PostgreSQL)

-- 不锁表
CREATE INDEX CONCURRENTLY idx_orders_user_id ON orders(user_id);

-- 注意:失败时会留下 INVALID 状态索引,需手动清理

在线建索引(MySQL 5.6+)

-- 大部分情况自动 ONLINE
ALTER TABLE orders ADD INDEX idx_user_id (user_id), ALGORITHM=INPLACE, LOCK=NONE;

配套模板

  • templates/index-review-template.md — 索引方案 + 查询场景映射 + 选择性分析 + 验证方式

质量自检

□ 每个索引对应明确查询场景或唯一约束
□ 复合索引顺序符合 ESR(等值 → 排序 → 范围)
□ 高频列表查询有覆盖索引(INCLUDE)
□ 软删除场景用部分索引保留唯一性
□ 全文搜索用 GIN(PG)/ FULLTEXT(MySQL)
□ 时间序列大表评估 BRIN
□ 没有重复索引
□ 单表索引数 ≤ 5
□ 索引总大小 ≤ 表大小(经验值)
□ 大表建索引用 CONCURRENTLY / ONLINE=ALGORITHM
□ 标注可删除或需观察的冗余索引
□ 验证指标:执行计划 / 耗时 / 扫描行数

常见坑

  1. 为每个查询字段建单列索引——写入慢、空间大、优化器选错
  2. 复合索引顺序错——范围放前面,过滤效果差
  3. 忽略排序和分页——filesort / 大范围扫描
  4. OFFSET 深分页——offset 100000 时仍要扫 100000 行
  5. 只优化读,忽略写——TPS 砍半
  6. 新增索引没有迁移窗口——大表建索引锁 30 分钟
  7. JSON 字段未建 GIN 索引——metadata-&gt;&gt;&#x27;k&#x27; 全表扫
  8. LIKE '%xxx%' 用 B-tree——必须 GIN trigram
  9. 低选择性字段单独建索引——is_active 索引几乎无效
  10. 唯一约束 + 唯一索引重复建——浪费空间
  11. 不用 EXPLAIN 验证——以为用上了实际没用
  12. CREATE INDEX 默认锁表——PG 必须 CONCURRENTLY
  13. UUID v4 主键写放大——B-tree 大量页分裂
  14. 索引建好不维护——半年后冗余 / 无用索引堆积

与其他 skill 的协作

上游:
  schema-design → 提供表结构和约束
  query-review → 提供真实 SQL 和执行路径
  api-designer → 提供查询模式(pagination / filter / sort)

下游:
  migration-rollout → 处理新增/删除索引的上线计划
  data-operations-safety → 评估生产建索引风险
  query-review → 验证索引被用上

相关参考

  • references/index-design-guide.md — B-tree 内部结构、ESR 原则深度、PostgreSQL 索引类型完整对比、大表索引重建策略、慢查询索引诊断流程

常见问题

5 问
答案由本站依据条目字段整理
Index Access Pattern怎么安装?

没有现成安装命令:按安装说明或仓库 README,把 SKILL.md 放进客户端的 skills 目录(一般一个技能一个文件夹)。

Index Access Pattern支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Index Access Pattern权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Index Access Pattern收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Index Access Pattern用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。