让模型建议 Postgres 索引,再让数据库给它的作业打分
来源:dev.to — 2026-09-08
📋 概述
问任何模型要索引,你都会得到一个 CREATE INDEX——这正是问题所在:它没法告诉你「你贴的这条查询已经快到极限了」,于是给出一条看似合理、落到 PR 里却无人能评估的语句。作者于是建了个小工具,让 Postgres 在事务里建索引、跑 EXPLAIN、再回滚「忘掉它」,客观检验模型的建议到底好不好。用 8 条日常查询、9 个模型测下来:可被索引优化的那六条每次都被同样的六个模型改进,采纳率稳定在 58% 到 67%,与模型价格几乎无关;还有两条需扫全表的聚合查询,41 条建议全军覆没——而没有任何一个模型会说「这条查询没有索引问题」。
🔑 核心要点
- 只看耗时会被骗:一个看似提速 17% 的索引其实从未被查询计划器采用——必须同时问「计划器真的用了它吗」,14ms 上的提速可能只是噪声。
- 安全机制只依赖一条 Postgres 属性:在事务里建索引再回滚——模型尽管提胡话,数据库会诚实评估然后「忘掉」它,全程不留痕迹。
- 数据里最反直觉的一点是采纳率几乎不随价格移动,贵的模型在此并不更聪明;真正烧钱的是输出 token——有的模型用 482 token 换 16 条可用建议,有的花 14,196 token 只给 7 条、贵了 23 倍。
- 两条扫全表的聚合查询是全文最佳论据:41 条建议全被拒,没有模型会说「没有索引能救这条查询」,而数据库用拒绝一切建议替它说了;模型之间的一致不等于验证,多半只是它们受过同一套训练。
💡 金句
Agreement between models is not verification. It mostly tells you they were trained on the same advice.
👍 0
👎 0
← 返回 dev.to 首页