[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-slow-query-first-steps-zh-CN":3,"blog-adjacent-slow-query-first-steps-zh-CN":29,"blog-related-slow-query-first-steps-zh-CN":66},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":28},33,"slow-query-first-steps","慢查询治理：先看执行计划再谈优化","加索引不是万能解药。没有执行计划，优化基本靠猜。","\u003Cp>系统变慢时，最常见的反应是加索引，其次是加缓存。这两种做法有时有效，有时只是把问题往后推了三个月。我们的习惯是先拿到执行计划，再决定动哪里。\u003C\u002Fp>\n\u003Ch2>排查顺序\u003C\u002Fh2>\n\u003Cp>第一步打开慢查询日志，按总耗时排序而不是按单次耗时。一条 200 毫秒但每秒执行 50 次的查询，比一条 5 秒偶尔执行的查询更值得处理。\u003C\u002Fp>\n\u003Cp>第二步用 EXPLAIN 看访问类型、扫描行数和是否用上索引。type 为 ALL 且 rows 很大，基本可以确认问题。\u003C\u002Fp>\n\u003Cp>第三步确认是否发生了隐式类型转换，比如字符串字段用数字比较，索引会直接失效。\u003C\u002Fp>\n\u003Ch2>常见误区\u003C\u002Fh2>\n\u003Cp>给每个字段都加索引。写入变慢、索引膨胀，收益却很小。\u003C\u002Fp>\n\u003Cp>只优化 SQL 不看业务。很多时候是因为查询了根本不需要的全量数据。\u003C\u002Fp>\n\u003Cp>把缓存当成修复手段。缓存命中率下降时，数据库会承受更大的瞬时压力。\u003C\u002Fp>\n\u003Cp>慢查询治理是长期工作。我们给每个项目留了一份查询清单，上线后每月复查一次最慢的十条。\u003C\u002Fp>","","teal","佳益方圆团队","2026-09-11T12:39:00+08:00",1,false,[16,17,18],"数据库","性能","SQL",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},0,"engineering","技术专栏","架构设计、性能优化、AI 集成与跨端方案等一线技术实践，由研发团队持续分享。","cpu","blue","article",60,{},{"previous":30,"next":48},{"id":31,"slug":32,"title":33,"excerpt":34,"content":9,"cover":9,"tone":35,"author":11,"publishedAt":36,"updatedAt":36,"readingMinutes":13,"featured":14,"tags":37,"category":41},12,"choosing-clients-not-deals","选客户比选项目重要","同一份合同，有的客户让团队成长，有的客户让团队耗尽心气。我们用三个问题筛选客户。","indigo","2026-09-13T11:26:00+08:00",[38,39,40],"创业","客户","选择",{"id":42,"parentId":20,"slug":43,"name":44,"description":45,"icon":46,"cover":9,"tone":25,"kind":26,"sortOrder":47,"count":20},6,"founder-notes","创业手记","创始团队在经营、管理与产品上的思考，记录一家软件公司的成长过程。","pen-tool",10,{"id":49,"slug":50,"title":51,"excerpt":52,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":54,"updatedAt":54,"readingMinutes":13,"featured":14,"tags":55,"category":59},53,"admin-panel-experience","后台系统的体验也是产品","后台用户每天使用八小时，一次低效的操作会被放大成长期的成本。","cyan","2026-09-09T12:39:00+08:00",[56,57,58],"后台","体验","产品设计",{"id":60,"parentId":20,"slug":61,"name":62,"description":63,"icon":64,"cover":9,"tone":25,"kind":26,"sortOrder":65,"count":20},2,"product-thinking","产品思维","需求分析、用户体验与产品设计方法论，以及从业务问题到产品方案的思考过程。","lightbulb",50,[67,78,89],{"id":68,"slug":69,"title":70,"excerpt":71,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":72,"updatedAt":72,"readingMinutes":13,"featured":14,"tags":73,"category":77},30,"integration-api-pitfalls","企业系统集成：接口对接最容易踩的五个坑","接口文档写得再全，真正对接时仍然会卡在字段约定、超时和重复推送这些细节上。","2026-10-17T09:00:00+08:00",[74,75,76],"系统集成","接口","工程实践",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":13,"slug":79,"title":80,"excerpt":81,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":82,"updatedAt":83,"readingMinutes":60,"featured":84,"tags":85,"category":88},"why-enterprise-systems-age","为什么企业系统会在三年后开始“老化”","系统上线时功能齐全，三年后却处处别扭。问题往往不在代码，而在交付时被忽略的那些变化。","2026-10-16T09:30:00+08:00","2026-10-18T15:58:14.648+08:00",true,[86,87],"系统演进","架构设计",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":90,"slug":91,"title":92,"excerpt":93,"content":9,"cover":9,"tone":25,"author":11,"publishedAt":94,"updatedAt":94,"readingMinutes":13,"featured":14,"tags":95,"category":99},31,"idempotent-design-basics","幂等设计：重复提交不只是用户手抖","网络重试、消息重投、用户连点，都会让同一个请求到达多次。幂等应该设计在接口里。","2026-10-05T10:13:00+08:00",[96,97,98],"接口设计","幂等","可靠性",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20}]