codebuddy索引建议需经四步验证:①执行explain获取基准;②提供完整上下文请求分析;③建索引后比对explain中type/key变化;④统计信息过期时须analyze table。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要用CodeBuddy对SQL查询做性能诊断,不是只看它说“加索引”,而是要确认建议是否真能落地、是否被优化器采纳、在你的真实数据上是否有效。
验证CodeBuddy索引建议是否被MySQL真正采纳
第一步:在MySQL命令行中执行原始慢查询前,必须加上EXPLAIN关键字,完整记录type、key、rows、Extra四列值。这一步漏掉任意一列,后续比对就失去基准。
第二步:把建表语句、已有索引定义、原始SQL、以及上一步的EXPLAIN输出结果,全部粘贴进CodeBuddy对话框,明确要求:“请基于此执行计划分析缺失索引并生成CREATE INDEX语句”。【不能只扔SQL,必须带上下文】
第三步:执行CodeBuddy返回的CREATE INDEX命令后,立刻再次运行EXPLAIN。重点核对type是否从ALL或INDEX变为range或ref,且key列是否显示新索引名。
第四步:如果key仍为NULL或显示旧索引,大概率是统计信息过期。此时必须手动执行ANALYZE TABLE navigation_orders;,再跑一次EXPLAIN——不刷新统计,优化器永远看不到新索引的价值。
用真实数据分布重测索引选择性
CodeBuddy推荐的复合索引字段顺序,在均匀分布数据里表现好,但在业务倾斜场景下可能完全失效。比如vessel_id有95%集中在10个值,而entry_time跨度大,那么(vessel_id, entry_time)的筛选效率会断崖式下跌。
方法一:从生产表抽样10万条真实记录,导入独立测试库test_nav。这一步必须用ORDER BY RAND()或按时间窗口抽取,避免采样偏差。
方法二:仅在test_nav中创建CodeBuddy建议的idx_vessel_entry (vessel_id, entry_time),删掉其他干扰索引。干净环境才能测出真实效果。
方法三:对高频vessel_id(如'VESSEL123')执行相同WHERE条件查询,记录耗时。若提速不足3倍,说明该索引在当前数据分布下选择性不足。
CodeBuddy Code CLI 的安装、配置与使用指南。CodeBuddy Code 是腾讯推出的 AI 驱动 CLI 编程助手,支持自然语言驱动开发。 - 必备触发词:CodeBuddy, codebuddy, AI CLI, Tencent AI coding, @tencent-ai/codebuddy-code, terminal AI assistant - 适用场景:安装 CodeBuddy CLI、配置 CodeBuddy、使用 CodeBuddy 命令、排查 CodeBuddy 问题
方法四:将字段顺序调整为(entry_time, vessel_id)重建索引,重新执行查询对比。时间字段前置,能更好利用B+树范围扫描特性。
交叉验证Percona Toolkit与Optimizer Trace
单靠CodeBuddy输出容易陷入模型偏好陷阱。例如它可能忽略覆盖索引机会,或对分区裁剪支持度判断失准。引入Percona Toolkit的pt-query-digest和MySQL原生Optimizer Trace可横向校验。
① 用pt-query-digest解析慢查询日志,提取Query_time、Lock_time、Rows_sent等实际指标,对比CodeBuddy建议前后数值变化。
② 开启optimizer_trace:执行SET optimizer_trace="enabled=on";后运行查询,再查SELECT * FROM information_schema.OPTIMIZER_TRACE;。重点看chosen_range_access_summary是否包含新索引路径。
③ 若Percona报告“Using index condition”而Optimizer Trace显示“range_analysis_skipped”,说明优化器因成本估算跳过了该索引——此时需检查innodb_stats_persistent是否开启,以及innodb_stats_auto_recalc是否启用。
上线后监控I/O延迟与缓冲池命中率
所有前期验证都通过,不代表线上一定有效。索引会增加写放大,可能拖慢INSERT/UPDATE速度,还可能挤占缓冲池空间。
登录腾讯云数据库控制台,在“性能监控”页签中,盯住两个核心指标:I/O延迟(单位ms)是否突增,InnoDB Buffer Pool Hit Rate是否跌破95%。这两个数字一旦恶化,立即回滚索引。
执行DROP INDEX idx_vessel_entry ON navigation_orders;即可移除索引。这一步操作不可逆,务必先备份表结构。










