第 6 课
SQL 调试流程
通过拆分过滤、JOIN、参数和方言语法来安全调试 SQL。
当一条查询返回错误行、太多行或没有行时,不要一上来重写整条 SQL。先让结构可读,再隔离变量。
一个实用流程
- 先格式化 SQL,让子句和 JOIN 可见。
- 确认基础表和最小可用
SELECT列表。 - 暂时移除可选过滤条件。
- 逐个把过滤条件加回来。
- 检查 JOIN 条件和关系基数。
- 在安全的本地环境中,用已知字面量替换应用参数。
- 确认方言相关语法,例如日期函数、引用符和 JSON 操作符。
这个流程足够谨慎,也足够适合生产问题排查。
区分格式化与执行
格式化工具可以帮助你判断文本是否能被支持的语法解析,并让结构清楚。它不能知道:
- 表是否真的存在于你的数据库
- 所选列是否有索引支持
- 参数值是否符合预期
- 查询是否符合产品语义
这个边界很重要。用格式化工具提升可读性,再用数据库控制台、日志、执行计划和测试确认执行行为。
关键结论
大多数 SQL 调试都可以通过“先缩到一个确定正确的核心,再逐步加回复杂度”来处理。
当复制出来的查询太密集时,可以把 SQL 格式化工具 作为调试第一步。