SuperAPI AI 工具集

db-index-hygiene

数据与分析

查看项目

更新于 10-15 22:11

技能介绍

用途:审计并清理只带来写入放大、存储与缓存成本的冗余索引。与新增缺失索引的 M11 相反,M12 关注移除多余索引。评分仅作用于 performance 轴(关系型索引卫生 w16,NoSQL 中并入 Indexación)。

主要能力:完全重复索引——键列列表相同且类型/谓词一致的两条索引,其一冗余;前缀冗余——(a) 被 (a, b) 完全覆盖,依 B-tree 最左前缀规则可通常删除较短的;未使用索引——在代表性窗口内无扫描(Tier-2 idx_scan = 0),属运行时真相,不单凭静态分析判定。

使用方式:Tier-0 静态解析 DDL 即可检测完全重复与最左前缀冗余;未使用索引检测仅运行时可用,Tier-0 下输出 status: needs_api,提示升级到 Tier-2。Tier-1 目录查询重复/冗余:SELECT indrelid::regclass AS tbl, array_agg(indexrelid::regclass) AS dupes FROM pg_index GROUP BY indrelid, indkey, indclass, indpred HAVING count(*) > 1; Tier-2 查未使用(需持续统计):SELECT relname AS tbl, indexrelname AS idx, idx_scan, pg_size_pretty(pg_relation_size(indexrelid)) AS sz FROM pg_stat_user_indexes WHERE idx_scan = 0 ORDER BY pg_relation_size(indexrelid) DESC; 方法为 index_check / query_stat。

产出:按 schema/finding.schema.json 输出 findings,如 M12.users.duplicate_email_index(severity:2、warn、performance、established、fixable: proposed — DROP INDEX)、M12.orders.redundant_prefix_index(severity:1、warn、fixable: proposed)、M12.events.unused_index(severity:2、warn,Tier-2 established / Tier-0 needs_api,fixable: proposed)。每条含 evidence.observed 原文引用 DDL 或目录/统计行,verification.reproduce 引用 $DATABASE_URL 的上述查询,expected_impact 分档并标注置信度,不给裸百分比。

限制:短窗口内未使用可能被月末/季度任务命中,必须使用代表性窗口,短窗口结论标为 directional 而非 established;唯一/约束支撑索引即使未被扫描也不可删除,因其维护完整性,绝不建议删除;删除仅作为 proposed 而非自动执行,规模化下删除不易回滚且可能是有意为之,修复预览建议使用 DROP INDEX CONCURRENTLY。