Navicat本身不提供查询性能团队优化记录功能,需依赖Navicat Monitor采集performance_schema等数据,并结合Git归档EXPLAIN结果、索引变更脚本及评审流程实现可追溯优化。
Navicat里没有“查询性能团队优化记录”功能
navicat 本身不提供自动记录、版本化或协作追踪 sql 查询优化过程的功能。它不会保存谁改了哪条语句、为什么这么改、前后执行计划对比等团队协作所需的审计线索。所谓“利用查询剖析工具记录”,其实是把 explain 结果、慢查日志片段、索引变更操作等手动归档,而非 navicat 内建的记录机制。
用 Navicat Monitor 的 Query Analyzer 做准实时性能回溯
如果你需要让团队看到“最近哪些查询变慢了”,得依赖 Navicat Monitor(独立服务,非 Navicat Desktop 自带),它通过三种方式采集数据:
- 从 MySQL 的
slow_query_log中拉取已标记为“慢”的语句(需提前开启) - 读取
general_log(慎用,开销大,仅调试期启用) - 查询
performance_schema中的events_statements_summary_by_digest表——这是最实用的来源,它会自动归一化 SQL(比如把WHERE id = 123和WHERE id = 456合并为WHERE id = ?),并统计总耗时、执行次数、平均延迟等
关键点:performance_schema 数据是内存驻留的,MySQL 重启后清空;Navicat Monitor 每隔几秒采样一次,但不会保留历史快照超过默认窗口(如 7 天),长期趋势需另存。
真正可落地的团队优化记录做法
靠 Navicat 单点操作无法形成可追溯的优化记录,必须搭配外部轻量流程:
- 每次调优前,在 Navicat 中对目标 SQL 执行右键 →
解释,截图或复制EXPLAIN输出表格(重点关注type、key、rows、Extra) - 在 Git 仓库建一个
/sql-optimization-log/目录,按日期或表名组织,存入:20260426_users_order_status_explain_before.txt、20260426_users_order_status_index_added.sql、20260426_users_order_status_explain_after.txt - 在索引变更前,先用 Navicat “设计表 → 索引”选项卡导出现有索引 DDL(右键索引 →
复制创建语句),避免误删 - 禁止直接在生产环境改索引;所有
ALTER TABLE ... ADD INDEX必须走评审 + 变更单 + 回滚脚本,Navicat 只是执行终端,不是决策系统
容易被忽略的细节
很多人以为把 EXPLAIN 截图发到群里就完成了“记录”,但实际漏掉了三个关键上下文:
-
EXPLAIN是瞬时快照,不反映并发压力下的真实表现(比如某条语句单独跑快,但和其它查询争锁时变慢) - Navicat Monitor 显示的“Top 5 Queries”里的
Total Time是累加值,如果某条语句执行 1000 次 × 每次 10ms,它会排第一,但这未必是瓶颈——可能是高频低耗查询,而非真正该优化的慢查询 -
performance_schema默认只收集 digest(归一化后)SQL,原始语句中的注释、换行、空格全丢失,无法定位到具体业务代码位置











