宽泛的 `EXPLAIN ANALYZE` 指令可能实际执行写入语句
原文依据:2 处Skill 要求优化前使用 `EXPLAIN ANALYZE`,但没有把它限制为只读 SELECT。在 PostgreSQL 中,ANALYZE 会真正执行被分析的语句,而不只是显示计划。
若代理对 INSERT、UPDATE、DELETE 或带副作用的语句使用它,连接到的数据库可能被修改,也可能产生锁、触发器副作用或高负载。
这是主动的性能建议,要求优化前使用 `EXPLAIN ANALYZE`,却没有把目标限制为只读查询。PostgreSQL 会实际执行被分析的语句;若代理把该建议用于 UPDATE、DELETE 或 INSERT,可能真实修改用户数据。文档同时说性能改动只应建议并经人工审核,但这没有明确禁止执行分析命令。用户可要求作者限定为 SELECT,或改用不执行语句的 `EXPLAIN`。
- **`EXPLAIN ANALYZE`** before optimizing — measure, don't guess- **List columns explicitly** — avoid `SELECT *`, it fetches unnecessary data and breaks struct scanning when schema changes查看另外 1 个位置
- **Avoid N+1 queries** — use `JOIN` or batch `WHERE id IN (...)` instead of querying in a loop- **Suggest improvements, never execute them** — performance changes (indexes, query rewrites, configuration) need human review in context of production data and workload patterns